尝试创建一个电源shell脚本,使用正则表达式删除两个括号之间的文件名中的文本

时间:2016-02-17 22:37:46

标签: regex windows powershell filenames

我正在尝试编写一个脚本来获取文件名并从字符串中删除任意一对括号和它们之间的文本

get-childItem *.* -recurse | 
foreach-object {$_ -replace '\(([^\)]+)\)', ''}

这会将文件夹中每个文件的新值列表输出到它应该看起来的提示,但是我似乎找不到的是一种将新值设置为文件名的方法,计划是对格式为“name(Randomnumbers).ext”

的文件夹中的多个文件执行此操作

感谢任何帮助

1 个答案:

答案 0 :(得分:0)

根据我对您的问题的理解,您希望使用括号内的名称重命名每个问题。为此,您可以使用-match运算符写入的$ Matches变量。我还假设您要维护文件扩展名。

Get-ChildItem -Recurse | ForEach-Object {
    if ($_ -match '(?<name>.*)(?:\([^\)]+\))(?<ext>.*)') {
        Rename-Item $_ "$($matches['name'])$($matches['ext'])"
    }
}