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

批量修改文件夹文件名:替换空格符号为短横线并转小写

批量重命名适配FTP的批处理解决方案

需求说明

每日需处理5000余个以.jpg格式为主的文件,重命名需满足以下规则:

  • 将文件名转为全小写
  • 把空格及所有指定符号(!#.,;&*()@/等)替换为短横线-
  • 示例:
    POS!99/6 09.JPG -> pos-99-6-09.jpg
    75@0hu dfs*1010.jpg -> 75-0hudfs-1010.jpg
    

现有代码问题

你当前的代码仅实现了文件名转小写和移除下划线的功能,缺少对各类符号的替换处理,也未处理连续短横线的情况。现有代码如下:

@echo off
setlocal
for /f "Tokens=*" %%f in ('dir /l/b/a-d') do (rename "%%f" "%%f")
for /f "tokens=1,2,* delims=_." %%F in ('dir /b "*_*.*"') do ren "%%F_%%G.%%H" "%%F.%%H"
endlocal
del *.bat

完整解决方案代码

以下是符合需求的批处理脚本,包含所有规则的实现:

@echo off
setlocal enabledelayedexpansion

:: 遍历当前目录下所有非目录文件
for /f "delims=" %%f in ('dir /b /a-d') do (
    :: 跳过当前批处理文件本身,避免误操作
    if "%%~nf%%~xf" neq "%~n0%~x0" (
        :: 获取全小写的文件名(含扩展名)
        set "lower_name=%%~lg"
        :: 初始化新文件名
        set "new_name=!lower_name!"
        
        :: 逐个替换目标符号为短横线
        set "new_name=!new_name: =-!"
        set "new_name=!new_name:!=!"
        set "new_name=!new_name:#=-!"
        set "new_name=!new_name:.=-!"
        set "new_name=!new_name:,=-!"
        set "new_name=!new_name:;=-!"
        set "new_name=!new_name:&=-!"
        set "new_name=!new_name:*=-!"
        set "new_name=!new_name:(=-!"
        set "new_name=!new_name:)=-!"
        set "new_name=!new_name:@=-!"
        set "new_name=!new_name:/=-!"
        
        :: 清理连续的短横线(避免多个符号替换后出现--)
        :clean_dashes
        if "!new_name:--=-!" neq "!new_name!" (
            set "new_name=!new_name:--=-!"
            goto clean_dashes
        )
        
        :: 仅当新文件名与原文件不同时执行重命名
        if "!new_name!" neq "%%~nf%%~xf" (
            ren "%%f" "!new_name!"
        )
    )
)

endlocal
:: 若需执行完成后删除自身,可启用下面一行(替换原del *.bat,避免误删其他批处理)
:: del "%~f0"

关键功能说明

  1. 延迟变量扩展:setlocal enabledelayedexpansion 允许在for循环内动态修改和读取变量值,是批处理处理字符串替换的必备设置。
  2. 小写转换:直接通过%%~lg获取文件名的小写形式,比原代码的dir /l方式更简洁可靠。
  3. 符号替换:通过多次set "new_name=!new_name:原字符=-!"语句,将所有目标符号替换为短横线;注意!符号在延迟扩展下需要用!!转义。
  4. 连续短横线清理:通过循环替换--为-,避免多个符号相邻时生成连续短横线的问题。
  5. 安全处理:跳过脚本自身文件,且仅在新文件名不同时执行重命名,避免无效操作和误删。

内容的提问来源于stack exchange,提问作者Maksym Merenkov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 03:10:17