我会一直将文件从外部服务器复制到本地服务器。文件名的格式如下:
Example 1 Invoice MM500780 10 26 2012 3 52 15 PM.PDF
Example 2 Invoice PS100679-02 10 30 2012 9 31 35 AM.PDF
Example 3 Return RTN001116 10 26 2012 8 59 56 AM.PDF
我想通过修剪第二个空格(表示日期和时间)之后的任何字符来重命名所有文件。文件名应为:
Example 1 Invoice MM500780.PDF
Example 2 Invoice PS100679-02.PDF
Example 3 Return RTN001116.PDF
无论如何我可以创建一个powershell文件并通过任务管理器运行它吗?
感谢您的帮助。
答案 0 :(得分:2)
尝试:
dir c:\mydir -filter *.pdf |
% {rename-item -path $_.fullname -newname ( ($_.name.split('')[0..1] -join ' ' ) + $_.Extension )}
答案 1 :(得分:1)
根据Christian的帖子,这是他的代码适合使用正则表达式模式匹配。
[regex]$regex = "\A\S*[\s]\S*"
dir c:\mydir -filter *.pdf | % {rename-item -path $_.fullname -newname ($regex.matches($_.BaseName)[0].value + $_.Extension )}
更改正则表达式以更改命名模式。使用正确的模式,您应该能够提取原始名称的任何部分以用作新名称。 模式是\字符串的开头,\ S非空白字符(*任意数字),\ s空格,\ S非空白字符(*任意数字)
答案 2 :(得分:0)
我相信你正在寻找的东西是这样的吗?
Split string with PowerShell and do something with each token
基本上你要在空格处分割文件名,然后将文件重命名为第一个和第二个标记中的任何内容。
答案 3 :(得分:0)
这款powershell单衬里应该可以满足您的需求。
Get-ChildItem | %{$splitName = $_.Name.Split(" ", 3); if($splitName.Length -gt 2) {$finalName = [string]::Join("",[string]::Join(" ",$splitName[0],$splitName[1]),$_.Extension); Rename-Item -Path $_.FullName -NewName $finalName}}