通过添加递增数字前缀重命名多个文件

时间:2015-07-10 13:49:40

标签: powershell

这些是我的原始文件名:

AAA.pdf

BCC.pdf

CCC.pdf

DDD.pdf

等...

我希望我的脚本通过添加带有递增数字的前缀来修改文件的名称,并在最后保留原始文件名:

文件1 - AAA.pdf

文件2 - BBB.pdf

文件3 - CCC.pdf

文件4 - DDD.pdf

等...

我如何在Powershell上解决这个问题?

这是我到目前为止所尝试的内容:

我首先导航到文件所在的路径。

$count=1; 
dir | %{rename-item $_-newname ("Document {0} - {1}" -f $count++, $_.name)}

问题:

rename-item:无法重命名,因为“AAA.pdf-newname”中的项目不存在。

2 个答案:

答案 0 :(得分:1)

我将假设您遇到的“问题”是由于无法找到文件而导致的错误。您应该使用循环中文件的完整路径。您还需要值和参数$_-newname之间的空格。

$count=1; 
dir "c:\temp" | %{rename-item $_.FullName -newname ("Document {0} - {1}" -f $count++, $_.name)}

但是你可以稍微更新这段代码,直到你不需要foreach循环或需要指定输入文件,而是直接使用管道。

$count=1; 
dir "c:\temp" | rename-item -newname {"Document {0} - {1}" -f $count++, $_.name}

答案 1 :(得分:0)

这会使用更多行,但我相信它是你所追求的。假设文件位于子目录"文件"。

$files = Get-ChildItem "$PSScriptRoot\files"

$i = 1
foreach ($file in $files){
    $newname = "Document $i - " + $file
    Rename-Item $($file.FullName) $newname
    $i++
}