2017-03-01 86 views
0

重命名的PDF文件使用命令太多文件重命名

get-childitem | % { rename-item $_ "2017-$_"} 

正确地重命名文件,33但应用相同的命令超过33页的文件名产生看起来像2017-2017-2017 ...-原。名称。

我该如何超越那个我还没有找到任何解释的限制?

+0

你确定你没有意外重新命名已重命名的文件你自己? – Filburt

回答

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)" 
} 
2

由于重命名,项目接受管道输入没有必要为一个foreach,
排除的文件与2017-开始:

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

以排除NY年/ 4位数号码前缀:

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

如果输出看起来不错,除去-whatif