You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PowerShell正则批量重命名视频:移除括号及内容并合并空格

批量重命名视频文件的PowerShell解决方案

给你写了个能直接用的脚本,完美实现你要的效果:

$validExtensions = '.mkv', '.mp4'
Get-ChildItem -Recurse -File |
    Where-Object Extension -In $validExtensions |
    Where-Object Length -GT 500mb |
    Rename-Item -NewName {
        # 移除所有圆括号及其内部内容
        $cleanName = $_.BaseName -replace '\(.*?\)', ''
        # 移除所有方括号及其内部内容
        $cleanName = $cleanName -replace '\[.*?\]', ''
        # 合并连续空格为单个空格,同时清理首尾多余空格
        $cleanName = $cleanName -replace '\s+', ' ' | Trim()
        # 转大写后拼接原扩展名
        $cleanName.ToUpper() + $_.Extension
    } -WhatIf

核心细节解释:

  1. 括号处理:用\(.*?\)和\[.*?\]这两个正则,其中.*?是非贪婪匹配,能精准匹配每一对括号及其内部内容,不会出现跨括号匹配的问题(比如不会把(A) (B)当成一个整体删掉)。
  2. 空格合并:\s+匹配1个及以上连续空格,替换成单个空格;Trim()用来去掉替换后可能留在文件名首尾的多余空格,避免出现类似 MOVIENAME 2024 1080P.mkv这种开头带空格的文件名。
  3. 预览模式:脚本里加了-WhatIf参数,执行后只会显示要重命名的结果,不会实际修改文件名。确认预览结果没问题后,删掉这个参数就能执行真实重命名了。

原脚本的问题:

你之前的脚本用了(.*)(\[.*\])(.*)这种贪婪匹配的正则,只能处理一组方括号,而且会把从文件名开头到最后一个方括号的所有内容都匹配进去,没法处理多组括号的情况;同时也没处理圆括号和合并空格的需求,所以达不到预期效果。

内容的提问来源于stack exchange,提问作者Vicky Dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 08:33:21