如何让.bat脚本识别含空格内容并批量修改文件名?
批量重命名脚本:替换小写+删除指定带空格的括号内容
我懂你每周要处理几百个文件的痛点——手动用工具批量改太费时间,现有脚本只能处理Digital转小写,却搞不定删掉(2 covers)这类带空格的括号内容对吧?下面给你两种解决方案,按需选择:
方案1:删除固定格式的内容(比如仅(2 covers))
如果你的文件里要删除的就是固定的(2 covers),这个简单脚本就能搞定,同时保留你原来的小写替换逻辑:
@echo off SETLOCAL ENABLEDELAYEDEXPANSION REM 替换Digital为digital SET "old=Digital" SET "new=digital" REM 定义要删除的目标字符串 SET "remove_str=(2 covers)" for /f "tokens=* delims=" %%f in ('dir /b *.*') do ( SET "newname=%%f" REM 执行小写替换 SET "newname=!newname:%old%=%new%!" REM 删除指定的带空格括号内容 SET "newname=!newname:%remove_str%=!" REM 仅当文件名有变化时才执行移动,避免无效操作 IF NOT "!newname!"=="%%f" ( move "%%f" "!newname!" echo 已处理: "%%f" → "!newname!" ) ) ENDLOCAL pause
关键改进点:
- 给
for循环加了delims=,确保能正确读取带空格的完整文件名 - 添加了专门的删除逻辑,直接把
(2 covers)替换为空(也就是删除) - 增加了文件名变化判断,避免重复移动同一个文件,还加了进度提示方便你跟踪处理情况
如果还有其他类似固定格式要删(比如(3 covers)),只要多加一行SET "newname=!newname:(3 covers)=!"就行。
方案2:删除任意数字的(n covers)格式
如果你的文件里有(2 covers)、(5 covers)这类不同数字的情况,上面的固定替换就不够用了。下面这个脚本可以自动识别并删除所有(数字 covers)格式的内容:
@echo off SETLOCAL ENABLEDELAYEDEXPANSION SET "old=Digital" SET "new=digital" for /f "tokens=* delims=" %%f in ('dir /b *.*') do ( SET "newname=%%f" REM 先处理小写替换 SET "newname=!newname:%old%=%new%!" REM 循环查找并删除所有(n covers)格式的内容 :clean_covers echo !newname! | findstr /i "([0-9]* covers)" >nul IF NOT ERRORLEVEL 1 ( REM 定位左括号的位置 SET "temp=!newname!" SET "before=" :find_open_bracket IF NOT "!temp:~0,1!"=="(" ( SET "before=!before!!temp:~0,1!" SET "temp=!temp:~1!" GOTO find_open_bracket ) REM 定位右括号的位置 SET "after=!temp:~1!" SET "middle_content=" :find_close_bracket IF NOT "!after:~0,1!"==")" ( SET "middle_content=!middle_content!!after:~0,1!" SET "after=!after:~1!" GOTO find_close_bracket ) REM 检查括号内是否包含"covers"(不区分大小写) echo !middle_content! | findstr /i " covers" >nul IF NOT ERRORLEVEL 1 ( REM 拼接删除后的文件名 SET "newname=!before!!after:~1!" GOTO clean_covers ) ELSE ( GOTO end_clean ) ) :end_clean IF NOT "!newname!"=="%%f" ( move "%%f" "!newname!" echo 已处理: "%%f" → "!newname!" ) ) ENDLOCAL pause
这个脚本的逻辑:
它会循环检查文件名,找到所有包含(数字 covers)的部分,定位括号的位置后确认内容符合要求,再删除整个括号区域,直到没有这类内容为止。
使用注意事项
- 先在测试文件夹里试运行脚本,确保效果符合预期再批量处理正式文件
- 如果文件名里有特殊字符(比如
!),可能需要调整延迟扩展的设置,不过漫画文件名一般不会有这类字符 - 脚本会处理当前文件夹下的所有文件,如果你只想处理
.cbr文件,可以把dir /b *.*改成dir /b *.cbr
内容的提问来源于stack exchange,提问作者gosunkugi




