You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用Batch批量重命名文件夹?按文本文件对应行匹配更名

用Batch实现文件夹批量对应重命名

没问题,作为Batch新手,这种逐行配对的重命名需求其实用计数器+双循环就能轻松搞定,我给你写一个完整的脚本,还会一步步解释每个部分的作用,方便你理解:

完整脚本代码

@echo off
setlocal enabledelayedexpansion

:: 初始化计数器,用来记录当前处理的行数
set "count=0"

:: 循环读取folder.txt中的每一行(旧文件夹名)
for /f "tokens=* delims=" %%a in (folder.txt) do (
    set /a count+=1
    :: 读取gbv.txt中对应行数的新名称(跳过前!count!-1行,取当前行)
    for /f "skip=!count!-1 tokens=* delims=" %%b in (gbv.txt) do (
        :: 检查旧文件夹是否存在
        if exist "%%a" (
            :: 检查新名称的文件夹是否已存在
            if not exist "%%b" (
                echo 正在重命名: "%%a" -> "%%b"
                rename "%%a" "%%b"
            ) else (
                echo 警告: 新名称"%%b"已存在,跳过重命名"%%a"
            )
        ) else (
            echo 警告: 文件夹"%%a"不存在,跳过
        )
        :: 读完对应行就跳出内层循环,避免读取gbv.txt后续行
        goto :next_line
    )
    :next_line
)

echo 重命名操作完成!
pause
endlocal

关键部分解释

  • @echo off:关闭命令行的默认命令输出,让脚本运行过程更整洁
  • setlocal enabledelayedexpansion:启用延迟环境变量扩展,确保循环里修改的计数器变量能实时生效
  • for /f "tokens=* delims=" %%a in (folder.txt):完整读取folder.txt的每一行,哪怕文件夹名包含空格也不会被拆分
  • set /a count+=1:每处理一行旧文件夹名,计数器加1,用来精准匹配gbv.txt的对应行
  • for /f "skip=!count!-1 tokens=* delims=" %%b in (gbv.txt):跳过前count-1行,读取gbv.txt的第count行作为新名称
  • 两个if判断:分别检查旧文件夹是否存在、新名称是否已被占用,避免运行时出现报错或意外覆盖

使用注意事项

  • 把脚本保存为rename_folders.bat,和folder.txtgbv.txt以及要重命名的文件夹放在同一个目录下
  • 确保folder.txtgbv.txt的行数完全一致,不然行数较多的文件里超出的行会被忽略
  • 如果文件夹名称包含&!这类特殊字符,可能需要额外调整脚本,但日常使用的普通名称都能正常处理

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

火山引擎 最新活动