批处理脚本如何提取文件中变量类型起始至分号的行内容
批处理脚本实现提取指定文本片段
嘿,这就给你一个完全匹配需求的批处理方案,我会把每个步骤的作用都讲清楚:
你的核心需求是:从input.txt的每一行中,提取从变量类型(如INT、CHAR)开始到分号;结束的内容,并将结果输出到D:\F1\output.txt。
完整批处理脚本
@echo off setlocal enabledelayedexpansion :: 确保输出目录存在,避免保存失败 if not exist "D:\F1\" mkdir "D:\F1\" :: 清空输出文件(如果已有旧内容) type nul > "D:\F1\output.txt" :: 逐行读取并处理input.txt for /f "delims=" %%a in (input.txt) do ( set "raw_line=%%a" :: 连续两次删除第一个冒号及之前的内容,去掉路径和行号部分 set "target_content=!raw_line:*:=!" set "target_content=!target_content:*:=!" :: 将提取到的内容追加到输出文件 echo !target_content! >> "D:\F1\output.txt" ) echo 处理完成!结果已保存到 D:\F1\output.txt endlocal
关键逻辑说明
@echo off:关闭命令行的默认命令回显,让输出更整洁setlocal enabledelayedexpansion:启用延迟环境变量扩展,确保循环内部修改的变量能实时生效(批处理的特殊要求)if not exist "D:\F1\" mkdir "D:\F1\":检查输出目录是否存在,不存在则自动创建,避免因目录缺失导致保存失败for /f "delims=" %%a in (input.txt):逐行读取input.txt的完整内容(delims=保证不会因为空格截断行内容)!raw_line:*:=!:这是批处理的字符串截断语法,意思是删除第一个冒号及之前的所有内容,执行两次后就精准去掉了D:\myfolder\main.c:和1:这类前缀,直接得到从变量类型开始的目标内容
测试验证
如果你的input.txt内容为:
D:\myfolder\main.c:1:INT ABCD 1234 abc(); D:\myfolder\main.c:3:CHAR EFGH 5678 xyz();
运行脚本后,D:\F1\output.txt的最终内容会是:
INT ABCD 1234 abc(); CHAR EFGH 5678 xyz();
内容的提问来源于stack exchange,提问作者Jaya Dev
相关产品推荐
相关产品推荐

