当特定字符串位于我们搜索的字符串下方的一行时,如何使用批量循环获取特定字符串?

当特定字符串位于我们搜索的字符串下方的一行时,如何使用批量循环获取特定字符串?

我有一个问题,我不知道该怎么解决。我需要搜索一个 txt 文件,其中搜索字符串位于顶部,但实际需要的数据位于下一行。

示例:所以我刚刚注意到并不是我的问题全部都显示了出来,示例下面是一个实际的例子。

{<  Setting name= "SerialNumber" serializeAs= "String" >}

{< Value > I-Need-This-Data < /value >}

我已经创建了脚本,我只需要帮助创建 FOR 命令,这样我就可以将变量设置为我需要在脚本中使用的数据。

For /f "delim?/token" %%a in (findstr "Serial Number" d:\...\text.txt ) do set SN=%%a

我不确定 token 或 delim。我该如何输入“for”才能让它在找到序列号后查看第二行?

答案1

  • 批处理文件:
for /f tokens^=3delims^=^<^/^> %%i in ('type file.txt ^| findstr /i "Value"')do set "_sn=%%~i"
  • 命令行:
for /f tokens^=3delims^=^<^/^> %i in ('type file.txt ^| findstr /i "Value"')do set "_sn=%~i"

>for /f tokens^=3delims^=^<^/^> %i in ('type file.txt ^| findstr /i "Value"')do set "_sn=%~i"

>set "_sn= I-Need-This-Data "

观察:要通过删除前后空格来提取字符串,请使用SPACE作为分隔符:

< Value > I-Need-This-Data < /value >

使用多个定界符(包括空格):

for /f tokens^=3delims^=^<^/^>^SPACE %i

>for /f tokens^=3delims^=^<^/^>^  %i in ('type file.txt ^| findstr /i "Value"')do set "_sn=%~i"

>set "_sn=I-Need-This-Data"

相关内容