如何查找字符串,然后在使用批处理脚本逐行读取文件时对令牌进行划分

时间:2018-12-12 11:14:04

标签: windows batch-file

I have tried to do like this 

输入文件包含必须读取的文件

for /F "tokens=* delims=" %%A in (%INPUTFILE%) do (
    SET my_line=%%A
    SET my_line=%my_line:#define ACCEL_PRESENT%
    findstr /C:"define ACCEL_PRESENT" 
    if %errorlevel%==0 ( SET my_line=%%A
    call :parse_it
    )

)

:parse_it
for /F "usebackq tokens=1-6 delims= " %%1 in ('%my_line%') do (
    echo %%3 > t.txt
)

以上代码没有任何帮助。有人可以帮助我实现预期的结果

1 个答案:

答案 0 :(得分:0)

这是一种可能的解决方案:

@echo off

setlocal EnableDelayedExpansion

for /f "tokens=* delims=" %%A in (%INPUTFILE%) do (
    set "my_line=%%A"
    set "my_line=!my_line:#define ACCEL_PRESENT=!"
    echo !my_line! | findstr /C:"define ACCEL_PRESENT"
    IF !errorlevel! EQU 0 ( SET "my_line=%%A" && call:parse_it )
)

:parse_it
for /F "usebackq tokens=1-6 delims= " %%A in ("%my_line%") do echo %%C > t.txt

rem exit /b

我希望您要删除字符串#define ACCEL_PRESENT

另外,请问如果%my_line%是命令(我认为不是,所以我删除了单引号,并添加了双引号)。

最好在for循环中使用字母变量!