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

批量替换文件名中[]为()的批处理脚本无效,求调整方法

批量替换文件名方括号为圆括号的批处理问题

需要批量重命名格式为series[sxxexx]title.mp4的文件,将文件名中的方括号[]替换为圆括号()(因Plex无法识别含[]的文件),尝试了以下两段批处理脚本但均无效果:

尝试的脚本1:

@echo on
Setlocal enabledelayedexpansion

Set "Pattern=*[*]*"
Set "Replace=*(*)*"

For %%a in (*.mp4) Do (
Set "File=%%a"
Ren "%%a" "!File:%Pattern%=%Replace%!"
)

pause&Exit

尝试的脚本2:

@echo on
Setlocal enabledelayedexpansion

Set "PL=["
Set "PR=]"
Set "RL=(("
Set "RR=)"

For %%a in (*.mp4) Do (
    Set "File=%%a"
Ren "%%a" "!File:%PL%PR%=%RL%RR%!"
)

 pause&Exit

问题原因与修正方案

原脚本错误点:

  1. 脚本1的错误:批处理的变量字符串替换不支持通配符(*)作为匹配模式,!File:%Pattern%=%Replace%!无法识别这种格式的替换规则。
  2. 脚本2的错误:!File:%PL%PR%=%RL%RR%!属于语法错误,无法直接拼接两个变量作为替换匹配项,且无法同时完成左右括号的替换。

正确的批处理脚本:

@echo on
Setlocal enabledelayedexpansion

:: 遍历当前目录下所有MP4文件
For %%a in (*.mp4) Do (
    Set "File=%%a"
    :: 替换左方括号为左圆括号
    Set "File=!File:[=(!"
    :: 替换右方括号为右圆括号
    Set "File=!File:]=)!"
    :: 仅当文件名有变化时执行重命名,避免无意义报错
    If Not "%%a"=="!File!" Ren "%%a" "!File!"
)

pause&Exit

使用说明:

  • 将脚本保存为.bat文件,放在需要重命名的MP4文件所在目录执行
  • 脚本会逐个替换文件名中的所有左、右方括号,支持文件名含多个方括号的场景
  • 新增的判断语句可避免对原本就无方括号的文件执行重命名操作,减少不必要的报错

内容的提问来源于stack exchange,提问作者Drew Pierce

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 10:07:49