Powershell批量重命名文件名包括()

时间:2017-06-08 20:12:42

标签: powershell

文件命名为20160825()。xlsx

在没有对文件名进行任何更改的情况下尝试了这两项

Get-ChildItem "C:\Users\..." -Filter “*()*” -Recurse | Rename-Item NewName {$_.name -replace ‘()’,’’ } 

Get-ChildItem "C:\Users\..." -Filter “*()*” -Recurse | Rename-Item -LiteralPath -NewName {$_.name -replace ‘()’,’’ } 

2 个答案:

答案 0 :(得分:1)

-replace使用正则表达式(regex),这是一种具有不同规则的不同语言,括号是用于分组的特殊字符,它们需要进行转义才能完全匹配。尝试:

$_.name -replace '\(\)'

答案 1 :(得分:1)

您可以让PowerShell / .net执行转义:

$RE = [RegEx]::escape("()")
Get-ChildItem "C:\Users\..." -Filter "*()*" -Recurse | 
    Rename-Item NewName {$_.Name -Replace $RE}

BTW我会避免使用一个用印刷替换引号的编辑器。