考虑以下文件:
文件1(自定义).jpg
文件2(自定义).jpg
我需要重命名文件以从其名称字符串中去掉“(自定义)”和/或“(自定义)”(请注意左括号前的空格)。
使用 做一个很容易Rename-Item -NewName {$_.name -replace " \(Custom\)", ""}
,但我想同时做两个(可能还有额外的字符串模式)
看起来,我很难向 Google 提出正确的问题。
答案1
阅读@Seth 建议的有关正则表达式的内容。很多时候你会在-match
powershell 中使用正则表达式,但其他 cmdLets 也喜欢-replace
并select-string
使用它们。
您似乎已经知道需要使用反斜杠转义特殊字符(如括号)。您可以使用 匹配空格字符,\s
并使用 指定 0 个或多个匹配项*
。接下来,您可以使用 OR 运算符(管道字符)|
来匹配多个选项之一 (x|y|z)(x 或 y 或 z)。
"file 1 (fred).jpg" -replace "\s*(\(fred\)|\(barney\)|\(wilma\))", ""
file 1.jpg
"file 2(barney).jpg" -replace "\s*(\(fred\)|\(barney\)|\(wilma\))", ""
file 2.jpg