如何用batch批处理脚本基于TXT变量批量生成对应命名及内容的文本文件
现有脚本的问题点
- 生成文件的逻辑放在
for循环外部,仅会执行1次,无法为每一个单词生成独立文件 - 错误使用
set /p命令,该命令用于接收用户输入而非变量直接赋值,导致变量取值异常 - 若在循环内部使用自定义变量存储值,默认关闭的延迟扩展会导致变量取值为预解析的初始值,无法拿到循环内的修改结果
可直接使用的修改后脚本
如果模板内容较短,直接硬编码在脚本内即可,无需额外定义变量,省略延迟扩展开启步骤:
@echo off :: 遍历file.txt每一行,delims=参数保证行内有空格也能完整读取 for /f "delims=" %%n in (file.txt) do ( :: 直接使用for循环的元变量%%n生成对应文件 ( echo Hello %%n echo How are you doing? )>%%n.txt )
如果模板内容较多,建议单独存为template.txt(保留里面的%VARIABLE%占位符),使用下方脚本实现占位符替换:
@echo off setlocal enabledelayedexpansion :: 读取模板文件内容到变量 set "tpl_content=" for /f "delims=" %%l in (template.txt) do ( set "tpl_content=!tpl_content!%%l|" ) :: 遍历每个姓名做替换并生成文件 for /f "delims=" %%n in (file.txt) do ( set "final_content=!tpl_content:%VARIABLE%=%%n!" :: 把分隔符|替换为实际换行输出 for /f "delims=|" %%c in ("!final_content!") do echo %%c >>%%n.txt ) endlocal
运行脚本后会在同级目录下生成对应名称的文本文件,内容完全符合你的预期要求。
内容的提问来源于stack exchange,提问作者Nash
相关产品推荐
相关产品推荐

