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



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

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

这将输出文件夹中每个文件的新值列表到提示符下,因为它应该看起来,但是我似乎找不到一种将新值设置为文件名的方法,计划是为文件夹中的多个文件执行此操作,格式为"name(Randomnumbers).ext"

任何帮助不胜感激

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

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

最新更新