You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

批处理脚本如何提取文件中变量类型起始至分号的行内容

批处理脚本实现提取指定文本片段

嘿,这就给你一个完全匹配需求的批处理方案,我会把每个步骤的作用都讲清楚:

你的核心需求是:从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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 09:47:58