我正在尝试重命名文件名以相同方式结尾的多个文件。这些文件当前为:“ Foo Bar(U)(V7.9)(USA).txt”“ Few Ber Doo Ber(U)(V7.9)(USA).txt” ect
我正在尝试删除名称的“(U)(V7.9)(USA)”部分,并用(USA)替换此部分。这些文件将被命名为:“ Foo Bar(USA).txt”“ Few Ber Doo Ber(USA).txt”
我无法完全正常工作,但以下是我一直尝试无济于事的方法:
get-childItem '* (U) (V7.9) (USA).txt' | rename-item -newname { $_.name -replace '(U) (V7.9) (USA)','(USA)' }
您要替换的几个字符是正则表达式中的特殊字符。它们具有特殊的保留含义,可让您在不“转义”时创建复杂的表达式。为了逃避它们,您只需要在特殊字符前面加上反斜杠即可。例子:
PS C:\> $string = "(U) (V7.9) (USA)"
#Failure
PS C:\> $string -replace "(U) (V7.9) (USA)", "(USA)"
(U) (V7.9) (USA)
#Success
PS C:\> $string -replace "\(U\) \(V7\.9\) \(USA\)", "(USA)"
(USA)
如果您遇到类似的问题,这是《Powershell正则表达式参考》。您可能会注意到,使用了反引号`字符而不是反斜杠-反引号是powershell中的转义字符,但是对于.NET(基于Powershell的构建)中的所有正则表达式处理而言,情况并非如此。因此,您可能会在Internet上的正则表达式示例中看到两者都用于powershell。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句