我想在所有子文件夹和文件的名称中将所有空格字符替换为"_".不幸的是,当我键入:
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
我该如何改进这个短代码?
我使用PowerShell替换pdf文件名:
Get-ChildItem -Path C:\All -Filter *.pdf | Rename-Item -NewName { $_.Name.Replace('.','_') }
Run Code Online (Sandbox Code Playgroud)
它工作正常,如果我更换%20到_,但如果我们用"test.one.pdf",我需要"test_one.pdf"作为输出,如果我使用上述语法它所取代的.在pdf之前,如"test_one_pdf".