我想使用 Powershell v2.0 将“.backup”附加到所有文件和文件夹名称(包括子文件夹和子文件夹中的文件)。
我想出了这个脚本:
$origin = get-childItem -recurse | ?{ !( $_.name -like "*.backup" ) }
$folders = $origin | ?{ $_.PSIsContainer }
$files = $origin | ?{ ! $_.PSIsContainer }
$files | rename-item -force -newname { $_.name + '.backup' }
$folders | rename-item -force -newname { $_.name + '.backup' }
但是我对许多项目都收到此错误,说明路径错误:
Rename-Item : Cannot rename because item at 'Microsoft.PowerShell.Core\FileSystem::E:\backup\test.backup\subfolder.backup\proc 1\backup\example.docx' does not exist.
At line:1 char:21
+ $files | rename-item <<<< -force -newname { $_.name + '.backup' }
+ CategoryInfo : InvalidOperation: (:) [Rename-Item], PSInvalidOperationException
+ FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.RenameItemCommand
但是这样的文件(example.docx)仍然存在于该路径中。
为什么会抛出该错误?在 PS 2.0 中将“.backup”附加到文件和文件夹的正确代码是什么?感谢您的任何想法!
编辑:我不认为我的问题与使用 PowerShell 重命名文件时,如何处理带有“[”的文件名?有两个原因:1-目标不同(只看标题);2-该线程没有为我提供代码来做我想做的事,即使它是一个很好的起点(这就是我在回答中链接到它的原因)。我的问题可能无关紧要,但我花了几个小时才弄清楚,所以也许我可以让某人免于几个小时的挫败感。但是我的问题表述得很糟糕,我现在将对其进行修改。