mat*_*ked 5 powershell renaming
我想在所有子文件夹和文件的名称中将所有空格字符替换为"_".不幸的是,当我键入:
Get-ChildItem -recurse -name | ForEach-Object { Rename-Item $_ $_.replace(" ","_") }
Run Code Online (Sandbox Code Playgroud)
错误信息:
重命名项:源和目标路径必须不同.在行: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
我该如何改进这个短代码?
Sha*_*evy 12
不要使用Name开关,它只输出对象的名称,而不是它们的完整路径.试试这个:
Get-ChildItem -Recurse | `
Where-Object {$_.Name -match ' '} | `
Rename-Item -NewName { $_.Name -replace ' ','_' }
Run Code Online (Sandbox Code Playgroud)
这里的问题是,如果文件名中没有空格,则名称不会更改。不支持此功能Rename-Item
。您应该Move-Item
改用:
Get-ChildItem -recurse -name | ForEach-Object { Move-Item $_ $_.replace(" ", "_") }
Run Code Online (Sandbox Code Playgroud)
此外,在您的答案中,您错过了下划线,$_.replace(...)
以及用空字符串替换空格的地方。包括在我的答案中。
归档时间: |
|
查看次数: |
10850 次 |
最近记录: |