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

Powershell 通过添加递增的数字前缀重命名多个文件,powershell,Powershell,以下是我的原始文件名: AAA.pdf 密件抄送.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}

以下是我的原始文件名:

AAA.pdf

密件抄送.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)}
问题:

重命名项目:无法重命名,因为“AAA.pdf newname”处的项目不存在

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

$count=1;
dir“c:\temp”|%{rename item$\.FullName-newname(“文档{0}-{1}”-f$count++,$\.name)}
但是您可以稍微更新这段代码,使其不需要foreach循环,或者不需要指定输入文件,而是直接使用管道

$count=1;
dir“c:\temp”|重命名项-newname{“Document{0}-{1}”-f$count++,$uu.name}

这使用了更多的行,但我相信这是您想要的。假定文件位于子目录“files”中


您可以先使用Get-ChildItem cmdlet处理每个文件,然后使用Rename-Item cmdlet更改名称。您尝试过什么吗?我会尝试EBGreen的建议,如果您有问题,请用代码更新您的问题。如果没有预料到的话,我们很感激您展示了一些编码工作。具体问题是什么?我认为您应该从代码中删除
%
。在那之后它应该会起作用。啊。。。我看那是一个悬而未决的编辑。这取决于您的当前目录,该目录可能容易出错。错误为:重命名项:无法重命名,因为“AAA.pdf newname”处的项不存在。但是,如果我先导航到路径,然后执行脚本,是否仍需要在循环中包括该路径?@Kat不,您根本不需要它。只是一个建议。请随意取下它。
$files = Get-ChildItem "$PSScriptRoot\files"

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