如何在PowerShell中重命名多个文件并保留括号
PowerShell批量重命名文件:移除
[*]前的所有字符 完全可以用PowerShell实现批量处理,步骤如下:
- 先测试(避免误操作)
运行以下命令,它只会预览要执行的重命名操作,不会实际修改文件名:
Get-ChildItem -Filter "*.txt" | Rename-Item -NewName { $_.Name -replace '^.*?(?=\[)', '' } -WhatIf
- 实际执行重命名
如果预览结果符合预期,去掉-WhatIf参数执行实际修改:
Get-ChildItem -Filter "*.txt" | Rename-Item -NewName { $_.Name -replace '^.*?(?=\[)', '' }
关键说明
- 正则表达式
^.*?(?=\[)的作用:^匹配文件名的开头位置.*?非贪婪匹配任意字符(避免误匹配到文件名中多个[的情况)(?=\[)正向预查,匹配到[就停止,且不会把[本身包含在要删除的内容里
- 如果目标文件不在当前PowerShell工作目录,给
Get-ChildItem加上路径参数:Get-ChildItem -Path "C:\你的文件夹路径" -Filter "*.txt" | Rename-Item -NewName { $_.Name -replace '^.*?(?=\[)', '' } - 要处理所有类型的文件,去掉
-Filter "*.txt",加上-File参数确保只处理文件(不会误改文件夹名称):Get-ChildItem -Path "C:\你的文件夹路径" -File | Rename-Item -NewName { $_.Name -replace '^.*?(?=\[)', '' }
注意事项
- 确保处理后不会出现重名文件,否则
Rename-Item会抛出错误。如果存在重名风险,需要额外添加逻辑(比如在文件名后追加序号)。
内容的提问来源于stack exchange,提问作者Harry Pen
相关产品推荐
相关产品推荐

