要重命名的文件太多

时间:2017-03-01 11:39:13

标签: powershell

使用命令

重命名pdf文件
get-childitem | % { rename-item $_ "2017-$_"}

正确重命名33个文件,但对33个以上的文件应用相同的命令会产生类似2017-2017-2017 ...- original.name的文件名。

如何克服我没有找到任何解释的限制?

2 个答案:

答案 0 :(得分:2)

由于Rename-Item接受管道输入,因此不需要ForEach,
排除以2017-开头的文件:

Get-ChildItem *.pdf -exclude 2017-*.pdf | 
    Rename-Item -Newname { $_.Name -replace '^','2017-' } -whatif

排除任何year / 4digit-number前缀:

Get-ChildItem *.pdf | 
  Where-Object Name -notmatch '^\d{4}-' |
    Rename-Item -Newname { $_.Name -replace '^','2017-' } -whatif

如果输出看起来没问题,请删除-whatif

答案 1 :(得分:1)

看起来你的代码正在追逐它的尾部(即它重命名已经重命名的东西)。将文件列表捕获到变量中,然后遍历该文件,重命名捕获的文件列表:

$filesToRename = Get-ChildItem -Filter '*.pdf'
$filesToRename | ForEach-Object {
  Rename-Item -Path $_.FullName -NewName "2017-$($_.FullName)"
}

如果要排除已重命名的文件:

$prefix = '2017-'
$filesToRename = Get-ChildItem -Filter '*.pdf' | Where-Object { !$_.Name.StartsWith($prefix) }
$filesToRename | ForEach-Object {
  Rename-Item -Path $_.FullName -NewName "$prefix$($_.FullName)"
}
相关问题