批处理脚本需求:提取file.txt指定字段并生成指定格式输出
批处理提取文件指定字段需求
我有一个名为file.txt的文件,内容如下:
== EXAMPLE1 == info www.example.com H1231 2 0 19128 XXX02 == EXAMPLE info www.example.com H1232 2 3 19107 XXX02 == EXAMPLE info www.example.com H1233 3 2 19307 XXX02 == EXAMPLE info www.example.com H1234 0 1 19407 XXX02 == EXAMPLE info www.example.com H1235 0 2 19507 XXX02 == EXAMPLE
当前使用的批处理脚本如下:
set "string1=abc" set "file=file.txt" for /f "delims=" %%a in ('findstr /i "\<%string1%\>" %file%') do set "print=%%a" echo %print% > print.txt
需要生成如下格式的输出结果:
H1231 19128 H1232 19107 H1233 19307 H1234 19407 H1235 19507
解决方案
可以修改批处理脚本,直接提取每行中需要的第3个和第6个字段,同时跳过无关行:
方案1:跳过首行直接提取
set "file=file.txt" > print.txt ( for /f "tokens=3,6 skip=1" %%a in (%file%) do ( echo %%a %%b ) )
方案2:过滤info行后提取
如果文件中存在其他无关行,可先过滤出包含info的行再提取字段:
set "file=file.txt" > print.txt ( for /f "tokens=3,6" %%a in ('findstr /i "info" %file%') do ( echo %%a %%b ) )
关键说明
tokens=3,6:指定提取每行的第3个和第6个字段,对应目标输出的Hxxx和数字值skip=1:跳过文件第一行的== EXAMPLE1 ==内容- 用括号包裹循环并直接重定向到
print.txt,避免重复打开文件,提升效率
内容的提问来源于stack exchange,提问作者Noval Juniardi
相关产品推荐
相关产品推荐

