循环当前目录的所有子文件进行文件名称修改

写一个bat循环当前目录的所有子文件,把文件名如果有包含"字符串1"替换为"字符串2"

同时处理文件名和文件夹名,只要名字里有 字符串1 就改成 字符串2

文件夹需要 从最深层往外层改名,避免路径提前变动导致找不到文件夹。

文件名和文件夹名都用同样的替换规则。

递归遍历当前目录及所有子目录中的文件和文件夹,并将名称中的"字符串1"替换为"字符串2"

@echo off
setlocal enabledelayedexpansion

echo === 开始批量重命名 ===

REM 先处理文件(递归)
for /r %%f in (*_jfq26*) do (
    set "oldname=%%~nxf"
    set "newname=!oldname:_jfq26=_gsq27!"
    if not "!oldname!"=="!newname!" (
        echo 文件: "%%f"
        ren "%%f" "!newname!"
    )
)

REM 再处理文件夹(必须倒序,否则路径丢失)
for /f "delims=" %%d in ('dir /ad /b /s *_jfq26* ^| sort /R') do (
    set "oldname=%%~nxd"
    set "newname=!oldname:_jfq26=_gsq27!"
    if not "!oldname!"=="!newname!" (
        echo 文件夹: "%%d"
        ren "%%d" "!newname!"
    )
)

echo.
echo === 批量重命名完成!===
pause

📌 用法:

  1. 把上面代码保存成 rename_all_jfq26_to_gsq27.bat
  2. 放到要处理的目录下,双击运行
  3. 会递归处理所有子文件和子目录