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

如何修改批处理脚本实现批量文件名转小写并移除特殊字符?

批量修改文件名:转小写并移除特殊字符

你的需求是将文件夹内文件名批量转为小写,并移除特殊字符,原脚本仅尝试转小写但写法错误,且未处理特殊字符,以下是修改后的完整脚本及说明:

需求示例

  • 原文件名:
    • ⚡ Document.txt
    • [Review] Test File.txt
  • 期望结果:
    • document.txt
    • review test file.txt

修改后的批处理脚本

@echo off
setlocal enableDelayedExpansion

:: 目标文件夹,当前文件夹则用".",可自行修改路径
set "currentfolder=."
pushd %currentfolder%

for %%f in (*) do (
    :: 跳过脚本自身,避免被修改
    if "%%~nxf"=="%~nx0" continue
    
    :: 拆分文件名和扩展名
    set "name=%%~nf"
    set "ext=%%~xf"

    :: 1. 将文件名转为小写
    for %%A in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
        set "name=!name:%%A=%%a!"
    )

    :: 2. 替换特殊字符为空格(可根据需求添加更多特殊字符)
    set "name=!name:⚡= !"
    set "name=!name:[= !"
    set "name=!name:]= !"
    set "name=!name:!= !"
    set "name=!name:#= !"
    set "name=!name:$= !"
    set "name=!name:%= !"
    set "name=!name:^= !"
    set "name=!name:&= !"
    set "name=!name:*= !"
    set "name=!name:(= !"
    set "name=!name:)= !"
    set "name=!name:-= !"
    set "name=!name:_= !"
    set "name=!name:+ = !"
    set "name=!name:= = !"
    set "name=!name:{= !"
    set "name=!name:}= !"
    set "name=!name:|= !"
    set "name=!name:\= !"
    set "name=!name:/= !"
    set "name=!name:;= !"
    set "name=!name:'= !"
    set "name=!name:"= !"
    set "name=!name:< = !"
    set "name=!name:> = !"
    set "name=!name:,= !"

    :: 3. 合并连续空格为单个空格
    :trim_spaces
    if "!name:  = !" neq "!name!" (
        set "name=!name:  = !"
        goto trim_spaces
    )

    :: 4. 去除文件名首尾的空格
    for /f "tokens=* delims= " %%B in ("!name!") do set "name=%%B"
    for /f "tokens=* delims= " %%B in ("!name!"^) do set "name=%%B"

    :: 5. 扩展名也转为小写
    set "ext=!ext:~1!"
    for %%A in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
        set "ext=!ext:%%A=%%a!"
    )
    set "newfilename=!name!.!ext!"

    :: 仅当新文件名与原文件不同时执行重命名
    if "!newfilename!" neq "%%~nxf" (
        ren "%%f" "!newfilename!" >nul 2>&1
        echo 已重命名: "%%~nxf" ^>^> "!newfilename!"
    )
)

popd
endlocal
pause

关键修改说明

  1. 修复转小写逻辑:原脚本循环小写字母做无意义替换,改为遍历大写字母,替换为对应小写字母,实现真正的转小写。
  2. 添加特殊字符处理:通过逐个替换的方式,将常见特殊字符(如⚡、[]、!等)转为空格,可根据实际需求补充更多字符。
  3. 优化空格格式:合并连续空格、去除首尾空格,避免文件名出现冗余空格。
  4. 扩展名统一小写:确保文件扩展名也转为小写,符合需求格式。
  5. 安全判断:跳过脚本自身,且仅在新文件名不同时执行重命名,避免无效操作或报错。

修改前后对比

处理前

处理前的文件列表

处理后

处理后的文件列表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 19:25:24