如何通过命令提示符使用名称列表批量重命名xhtml文件?
批量用名称列表重命名XHTML文件脚本详解
需求说明
你有一个包含名称列表的names.txt文件,需要按顺序将指定目录下的.xhtml文件(如00001.xhtml)重命名为列表中的名称+.xhtml格式。以下是给原脚本添加详细注释后的版本,你可以直接修改参数适配自己的路径需求。
带注释的完整批处理脚本
@echo off :: 关闭命令行默认回显,让执行过程更简洁 setlocal enabledelayedexpansion :: 启用延迟环境变量扩展,支持循环内动态读取变量值 :: -------------------------- 可自定义参数 -------------------------- set "listfile=./names.txt" :: 名称列表文件的路径,可写绝对路径(例:C:\my_files\names.txt) set "target_ext=.xhtml" :: 需要重命名的文件扩展名 set "target_dir=./" :: 存放XHTML文件的目录,可写绝对路径(例:D:\xhtml_docs\) :: ----------------------------------------------------------------- set count=0 :: 遍历目标目录下所有指定扩展名的文件(仅文件,不包含子目录) for /f "delims=" %%a in ('dir /b /a-d "%target_dir%*%target_ext%"') do ( set /a count+=1 :: 计数器自增,对应名称列表的行号 :: 从名称列表中读取第count行的内容 for /f "tokens=1* delims=:" %%b in ('findstr /n "^" "%listfile%" ^| findstr "^!count!:"') do ( :: 执行重命名操作:原文件名 → 列表名称+目标扩展名 ren "%target_dir%%%a" "%%c%target_ext%" ) ) endlocal :: 结束局部环境,恢复系统原有环境变量
关键部分说明
- 参数修改区:直接修改
listfile、target_ext、target_dir三个变量就能适配你的路径,不用改动脚本核心逻辑 - 延迟扩展:因为要在循环里动态更新
count计数器,必须启用enabledelayedexpansion,读取变量时用!变量名!而非%变量名% - 文件遍历:
dir /b /a-d仅输出文件名,过滤掉子目录,确保只处理目标文件 - 列表行匹配:
findstr /n "^"给名称列表的每一行添加行号,再通过行号匹配对应序号的文件名,保证顺序对应
注意事项
- 确保名称列表的行数和XHTML文件数量一致,否则多余的文件不会被重命名,剩余的名称也不会被使用
- 避免文件名包含
&、|等特殊字符,防止脚本执行出错 - 建议先备份目标文件再执行脚本,避免误操作导致文件丢失
内容的提问来源于stack exchange,提问作者WV-Mike
相关产品推荐
相关产品推荐

