批处理脚本:提取TXT内容生成对应文件名的独立文件问题
批处理脚本:从TXT提取内容生成独立文件
你的需求是从a.txt每行提取内容作为文件名,生成独立的TXT文件,但当前脚本生成了合并文件名,无法达到预期效果。
原脚本问题
原脚本:
@echo off setlocal enabledelayedexpansion for /f "tokens=*" %%a in ('type "a.txt"') do ( cd > %%a.txt ) endlocal
问题有两点:
cd > %%a.txt的作用是把当前目录路径写入文件,而非创建以行内容为文件名的空文件;a.txt每行存在前导空格,导致变量读取异常,进而出现文件名合并的情况。
修正后的脚本
方案1:处理带空格的行(推荐)
该方案会自动去除每行的前后空格,确保生成的文件名符合预期:
@echo off setlocal enabledelayedexpansion for /f "tokens=* delims=" %%a in (a.txt) do ( set "raw_line=%%a" :: 去除前后空格 for /f "tokens=* delims=" %%b in ("!raw_line!") do set "clean_name=%%b" :: 创建空文件,若需将该行内容写入文件,替换为 echo !clean_name! > "!clean_name!.txt" type nul > "!clean_name!.txt" ) endlocal
方案2:简化版(适用于无多余空格的行)
如果a.txt每行无前后空格,可直接使用:
@echo off for /f "tokens=*" %%a in (a.txt) do ( echo. > "%%a.txt" )
效果验证
运行修正后的脚本后,会根据a.txt中的两行内容生成两个独立文件:
All_type_2020.txtAll_Foods_2021.txt
内容的提问来源于stack exchange,提问作者JR Santos
相关产品推荐
相关产品推荐

