我正在尝试编写一个脚本来获取文件名并从字符串中删除任意一对括号和它们之间的文本
get-childItem *.* -recurse |
foreach-object {$_ -replace '\(([^\)]+)\)', ''}
这会将文件夹中每个文件的新值列表输出到它应该看起来的提示,但是我似乎找不到的是一种将新值设置为文件名的方法,计划是对格式为“name(Randomnumbers).ext”
的文件夹中的多个文件执行此操作感谢任何帮助
答案 0 :(得分:0)
根据我对您的问题的理解,您希望使用括号内的名称重命名每个问题。为此,您可以使用-match运算符写入的$ Matches变量。我还假设您要维护文件扩展名。
Get-ChildItem -Recurse | ForEach-Object {
if ($_ -match '(?<name>.*)(?:\([^\)]+\))(?<ext>.*)') {
Rename-Item $_ "$($matches['name'])$($matches['ext'])"
}
}