我想在所有子文件夹和文件的名称中将所有空格字符替换为“_” . 不幸的是,当我输入:
Get-ChildItem -recurse -name | ForEach-Object { Rename-Item $_ $_.replace(" ","_") }
错误信息:
重命名项:源和目标路径必须不同 . 在行:1 char:60 Get-ChildItem -recurse -name | ForEach-Object {Rename-Item <<<< $ _ $ .replace(“”,“”)} CategoryInfo:WriteError:(PATH_HERE)[Rename-Item],IOException FullyQualifiedErrorId:RenameItemIOError,Microsoft.PowerShell.Commands.RenameItemCommand
我该如何改进这个短代码?
2 回答
不要使用Name开关,它只输出对象的名称,而不是它们的完整路径 . 试试这个:
这里的问题是,如果文件名中没有空格,则名称不会更改 .
Rename-Item
不支持此功能 . 您应该使用Move-Item
代替:另外,在你的回答中你错过了
$_.replace(...)
中的下划线以及用空字符串替换空格的地方 . 在我的回答中包括这个 .