Parsing 在批处理脚本中将已解析的值设置为变量

Parsing 在批处理脚本中将已解析的值设置为变量,parsing,batch-file,scripting,Parsing,Batch File,Scripting,所以我很难做到这一点,我试图解析一个txt文件中的特定值,并将其添加到一个变量中,但是没有让它正常工作,我使用以下代码 for /F "tokens=5 delims= " %%a in ('findstr /I "Short part of line 00:00" test.txt') do set "var1=%%a" 问题是,还有其他类似的文本行略有不同,我包括了一个短语,当整体考虑时,它是唯一的,但我不认为命令会考虑到这一点?文件的大小始终相同,是否需要重新写入该文件以在特定行上查找标

所以我很难做到这一点,我试图解析一个txt文件中的特定值,并将其添加到一个变量中,但是没有让它正常工作,我使用以下代码

for /F "tokens=5 delims= " %%a in ('findstr /I "Short part of line 00:00" test.txt') do set "var1=%%a"
问题是,还有其他类似的文本行略有不同,我包括了一个短语,当整体考虑时,它是唯一的,但我不认为命令会考虑到这一点?文件的大小始终相同,是否需要重新写入该文件以在特定行上查找标记并分配给变量

编辑:

因此,如果我使用命令:

for /F "tokens=5 delims= " %%a in ('findstr /I "Primary process Started" test.txt') do set "var1=%%a"

我应该读回2:50:00,而不是5:08:56,这是一个奇怪的,其余的都是简单的翻转,所以“初级第3部分平衡”会给我时间来读“次级第3部分平衡”

根据你的评论,这应该有效:

@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%f in (input.txt) do (
    set line=%%f
    if "!line:~0,23!"=="Primary process Started" (
        for /f "tokens=4" %%t in ("%%f") do set var1=%%t
        goto BREAK
    )
)
:BREAK
echo %var1%

稍微简化一下@MichaelS代码

@echo off
for /f "tokens=1-4 delims= " %%G in (input.txt) do (
    if "%%G %%H %%I"=="Primary process Started" (
        set var1=%%J
        GOTO BREAK
    )
)
:BREAK
echo %var1%

如果没有输入数据的片段,很难提供帮助。现在至少发布一行您想要匹配的行和一行您错误匹配的行如何?请发布您想要解析的确切行以及您想要从中提取的子字符串。为了确保我正确回答您的问题:您想要找到以
主进程开始的行
,请提取时间(在本例中为2:50:00)并将其存储在变量
var1
?您需要使用/C选项!您也使用了错误的标记。如果您碰巧阅读了FINDSTR命令的帮助,请使用空格分隔多个搜索字符串,除非参数前缀为/C。例如,“FINDSTR”hello there“x.y”搜索“hello”或文件x.y中的“there.”FINDSTR/C:“hello there”x.y在文件x.y中搜索“hello there”。
@echo off
for /f "tokens=1-4 delims= " %%G in (input.txt) do (
    if "%%G %%H %%I"=="Primary process Started" (
        set var1=%%J
        GOTO BREAK
    )
)
:BREAK
echo %var1%