Windows 使用powershell批量重命名文件

Windows 使用powershell批量重命名文件,windows,powershell,batch-rename,rename-item-cmdlet,Windows,Powershell,Batch Rename,Rename Item Cmdlet,我可以使用以下命令批量重命名工作目录中的文件: Dir | %{Rename-Item $_ -NewName ("0{0}.wav" -f $nr++)} 但是,我希望文件重命名从零以外的位置开始。说0500,然后按顺序重命名 Dir | %{Rename-Item $_ -NewName ("0{500}.wav" -f $nr++)} 返回错误 如何告诉rename从0以外的数字开始?您可以预先将计数器初始化为500。此外,您不需要为此使用For

我可以使用以下命令批量重命名工作目录中的文件:

Dir | %{Rename-Item $_ -NewName ("0{0}.wav" -f $nr++)}
但是,我希望文件重命名从零以外的位置开始。说0500,然后按顺序重命名

Dir | %{Rename-Item $_ -NewName ("0{500}.wav" -f $nr++)}
返回错误


如何告诉rename从0以外的数字开始?

您可以预先将计数器初始化为500。此外,您不需要为此使用ForEach对象循环(
%
),因为
NewName
参数可以使用scriptblock

这里很重要的一点是,您需要将
Get ChildItem
部分放在括号中,以便在重命名项之前完成此操作,否则您可能会尝试重命名已重命名的文件

$nr = 500
(Get-ChildItem -Path 'D:\Test' -Filter '*.wav' -File) | Rename-Item -NewName { '{0:D4}{1}' -f ($script:nr++), $_.Extension }

只需将计数器初始化为起始数字,如
$nr=500
。除此之外,只需执行
Dir
,您就是在玩火,因为这将获取当前目录中的所有文件和文件夹。最好添加路径、文件筛选器和
-file
开关,使其仅重命名.wav文件:
(Get ChildItem-path'-filter'*.wav'-file)
在开头添加
$nr=500
,也会返回错误。我不介意在
Dir
中执行所有操作,因为我知道工作目录中有什么,并且只在需要时运行它。添加文件路径有时会很长很麻烦好吧,我认为循环可以消除重命名已经重命名的文件的需要。但在您的示例中,您传递了一个路径,我不希望这样,因为我已经在工作目录中,必须再次键入该目录可能会很麻烦。@Fernan然后省略该路径