我有一个目录,其中包含大约50个文件,我想在所有文件名前添加"CD1" . 阅读here和here后 . 我想出了以下命令(在Windows 10上使用PowerShell ISE):
Get-ChildItem | Rename-Item -NewName {'CD1' + $_.Name}
但是每个文件名都有几次“CD1” . 我也得到了错误:
Rename-Item : Could not find a part of the path.
At line:1 char:17
+ Get-ChildItem | Rename-Item -NewName {'CD1' + $_.Name}
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (C:\Users\TOOdhm...CD1CD1CD149.mp3:String) [Rename-Item], DirectoryNotFoundException
+ FullyQualifiedErrorId : RenameItemIOError,Microsoft.PowerShell.Commands.RenameItemCommand
好像它不知道何时停止遍历目录所以我使用了 ForEach-Object
cmdlet并尝试了这个:
Get-ChildItem | ForEach-Object { Rename-Item -NewName {('CD1' + $_.Name)} }
什么也没做,并给出了错误
Rename-Item:无法计算参数'NewName',因为它的参数被指定为脚本块而没有输入 . 如果没有输入,则无法评估脚本块 .
有没有人知道我为什么会遇到这个问题?我现在可以手动重命名文件,但这两个命令都应该有效 . 我甚至找到了一个网站,他们在这种格式中几乎完全使用了一个例子(我认为在他们的例子中他们可能会附加)这些命令,这让我觉得它们不适合我 .
2 回答
在第二次尝试中,您使用大括号来创建一个不需要的脚本块 . 以下对我有用
请注意额外的-Path以重复文件的当前路径 .
避免再次处理已重命名的项目的一种方法是将Get-ChildItem括在括号中 .
要避免连续运行的其他前置,请排除以
CD1
开头的文件要么