我正在尝试使用Powershell整理一批文件名,但出现此错误:
Rename-Item : Cannot create a file when that file already exists. At line:1 char:7 + Dir | Rename-Item -NewName {$_.Name.Substring(0,$_.BaseName.Length-4) ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : WriteError: (C:\Users\garet\...e Mine (1).mp3:String) [Rename-Item], IOException + FullyQualifiedErrorId : RenameItemIOError,Microsoft.PowerShell.Commands.RenameItemCommand
我正在使用的命令是:
Dir | Rename-Item -NewName {$_.Name.Substring(0,$_.BaseName.Length-4) + $_.Extension}
答案 0 :(得分:2)
我认为您的命令目前不是删除前4个字符,而是删除最后4个字符。试试这个:
Dir | Rename-Item -NewName {$_.name.substring(4,$_.BaseName.length-4) + $_.Extension}
您可以进一步简化此操作,就好像您希望字符串的完整长度减去开头的字符数一样,只需提供起始索引即可。
Dir | Rename-Item -NewName {$_.name.substring(4) + $_.Extension}
例如:
'test'.substring(2)
输出:
st
说明:
在使用substring
时,您传递了两个值,第一个是要从其开始的字符串的字符索引,第二个是要捕获的字符串从该点开始要捕获的字符数。