用 Powershell 替换文件名的确切部分
Replace exact part of file name with Powershell
我尝试了找到的代码 here 但没有成功。
我需要的是用另一个替换精确文本,但是这段代码似乎不能处理精确文本。
这是我使用的代码,我需要的是,例如,将以“.L.wav”结尾的文件名替换为“_L.wav”,但是 powershell 甚至会尝试重命名以“.BL.wav[=25”结尾的文件=]”变成“_L.wav”。
谢谢。
ls *.* | Rename-Item -NewName {$_.name -replace ".L.wav","_L.wav"}
ls *.* | Rename-Item -NewName {$_.name -replace ".LFE.wav","_LFE.wav"}
ls *.* | Rename-Item -NewName {$_.name -replace ".R.wav","_R.wav"}
ls *.* | Rename-Item -NewName {$_.name -replace ".BL.wav","_LSR.wav"}
ls *.* | Rename-Item -NewName {$_.name -replace ".BR.wav","_RSR.wav"}
ls *.* | Rename-Item -NewName {$_.name -replace ".SL.wav","_LSS.wav"}
ls *.* | Rename-Item -NewName {$_.name -replace ".SR.wav","_RSS.wav"}
Read-Host -Prompt "Press Enter to exit" ```
正则表达式中的点表示任何字符。如果不逃避,事情就会出错。
尝试
Rename-Item -NewName {$_.Name -replace ('{0}$' -f [regex]::Escape('.L.wav')),'_L.wav'}
或手动转义正则表达式元字符:
Rename-Item -NewName {$_.Name -replace '\.L\.wav$','_L.wav'}
末尾的$
锚定要匹配字符串末尾的文本
此外,与其使用 ls *.* | Rename-Item {...}
,不如使用
(Get-ChildItem -Filter '*.L.wav' -File) | Rename-Item {...}
(ls 是 Get-ChildItem 的别名)
- 使用
-Filter
您可以指定要查找的文件。
- 使用
-File
开关,确保不要同时尝试重命名文件夹对象。
- 通过将代码的 Get-ChildItem 部分括在方括号中,您可以确保在开始重命名文件之前已完成文件的收集。否则,代码可能会尝试继续重命名已处理的文件。
我尝试了找到的代码 here 但没有成功。
我需要的是用另一个替换精确文本,但是这段代码似乎不能处理精确文本。
这是我使用的代码,我需要的是,例如,将以“.L.wav”结尾的文件名替换为“_L.wav”,但是 powershell 甚至会尝试重命名以“.BL.wav[=25”结尾的文件=]”变成“_L.wav”。
谢谢。
ls *.* | Rename-Item -NewName {$_.name -replace ".L.wav","_L.wav"}
ls *.* | Rename-Item -NewName {$_.name -replace ".LFE.wav","_LFE.wav"}
ls *.* | Rename-Item -NewName {$_.name -replace ".R.wav","_R.wav"}
ls *.* | Rename-Item -NewName {$_.name -replace ".BL.wav","_LSR.wav"}
ls *.* | Rename-Item -NewName {$_.name -replace ".BR.wav","_RSR.wav"}
ls *.* | Rename-Item -NewName {$_.name -replace ".SL.wav","_LSS.wav"}
ls *.* | Rename-Item -NewName {$_.name -replace ".SR.wav","_RSS.wav"}
Read-Host -Prompt "Press Enter to exit" ```
正则表达式中的点表示任何字符。如果不逃避,事情就会出错。
尝试
Rename-Item -NewName {$_.Name -replace ('{0}$' -f [regex]::Escape('.L.wav')),'_L.wav'}
或手动转义正则表达式元字符:
Rename-Item -NewName {$_.Name -replace '\.L\.wav$','_L.wav'}
末尾的$
锚定要匹配字符串末尾的文本
此外,与其使用 ls *.* | Rename-Item {...}
,不如使用
(Get-ChildItem -Filter '*.L.wav' -File) | Rename-Item {...}
(ls 是 Get-ChildItem 的别名)
- 使用
-Filter
您可以指定要查找的文件。 - 使用
-File
开关,确保不要同时尝试重命名文件夹对象。 - 通过将代码的 Get-ChildItem 部分括在方括号中,您可以确保在开始重命名文件之前已完成文件的收集。否则,代码可能会尝试继续重命名已处理的文件。