我有一堆文件中包含相同的字符串,并希望删除它们
Dir | Rename-Item -NewName { $_.Name -replace " (my string here)","" }
但是,这似乎并没有从文件名中包含该字符串的所有文件中删除字符串。我需要ReGex吗?
之前有一个空格(这让我觉得我在某种程度上需要ReGex。
答案 0 :(得分:1)
所以我认为需要ReGex以及Powershell的工作方式是正确的:
Dir | Rename-Item -NewName { $_.Name -replace "(\s*) \(STRING HERE\)","" }
答案 1 :(得分:1)
-replace
确实使用正则表达式(不区分大小写)。
使用.replace
这样的string
方法可以在没有正则表达式的情况下获得相同的结果:
Get-ChildItem -path 'your path' |
Rename-Item -NewName { $_.BaseName.replace(' (my string here)','') + $_.extension } -WhatIf
请注意使用$_.basename
代替name
。这是因为name既包含文件名又包含扩展名,而basename则不包含。