首页 > 解决方案 > 如何处理文本文件的每一行并对每一行做一些事情

问题描述

如何使用批处理文件处理文本文件的每一行,并检查当前行中包含的字符串,如果为真则执行其他操作并继续下一行直到 eol。我有一个包含如下行的文本文件:

\\.\DISPLAY2|ASPEED Graphics Family(WDDM)
\\.\DISPLAY7|NVIDIA Tesla M10
\\.\DISPLAY11|NVIDIA Tesla M10
\\.\DISPLAY15|NVIDIA Tesla M10
\\.\DISPLAY3|NVIDIA Tesla M10
\\.\DISPLAY10|ASPEED11 Graphics Family(WDDM)

如果该行包含单词“NVIDIA”,我需要获取单词“DISPLAY”旁边的数字所以在这个例子中,我应该得到数字 7、11、15 和 3

标签: batch-file

解决方案


目前尚不完全清楚您是否只想处理包含NVIDIA.

如果你这样做了,那么根据你提供的信息,你可以试试这个:

@Echo Off
For /F "Tokens=2 Delims=Yy|" %%A In (
    'FindStr /I "DISPLAY[0-9]*|NVIDIA" "File.txt" 2^>Nul') Do Echo %%A
Pause

如果您想处理所有字符串内容,但只提供了有关您希望对包含 的行做什么的信息NVIDIA,这可能会有所帮助:

@Echo Off
For /F UseBackDelims^=^ EOL^= %%A In ("File.txt"
) Do Set /P "=%%A"<Nul|FindStr /I "DISPLAY[0-9]*|NVIDIA">Nul 2>&1 &&(
    For /F "Tokens=2 Delims=Yy|" %%B In ("%%A") Do Echo %%B
)||Echo Do something else
Pause

以上示例使用的是文本文件名File.txt,请根据需要进行调整。


推荐阅读