Batch file 如何处理文本文件中的每一行并对每一行进行处理
如何使用批处理文件处理文本文件中的每一行,并检查当前行中包含的字符串,如果为true,则执行其他操作,然后继续执行下一行,直到下线。 我有一个包含如下行的文本文件:Batch file 如何处理文本文件中的每一行并对每一行进行处理,batch-file,Batch File,如何使用批处理文件处理文本文件中的每一行,并检查当前行中包含的字符串,如果为true,则执行其他操作,然后继续执行下一行,直到下线。 我有一个包含如下行的文本文件: \\.\DISPLAY2|ASPEED Graphics Family(WDDM) \\.\DISPLAY7|NVIDIA Tesla M10 \\.\DISPLAY11|NVIDIA Tesla M10 \\.\DISPLAY15|NVIDIA Tesla M10 \\.\DISPLAY3|NVIDIA Tesla M10 \\.
\\.\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。最简单的方法是使用
FOR
语句将文本文档的每一行声明为字符串。由于文本文档的格式,我们不能仅使用tokens=
来提取数字
使用findstr/i“NVIDIA”“list.txt”
我们可以让脚本只读取包含单词NVIDIA
的测试为阳性的行,其中list.txt
是文本文件的名称
使用,我们可以通过执行以下操作轻松提取数字:
DISPLAY
|
!绳子代码>
为了检查数字是否为真,可以在For
语句中使用if
语句。例如,如果“!string!”==“Number”(
)。请记住,如果尝试在FOR循环中使用goto
,它将中断循环并退出循环(因此不会检查新行)
请随意更改脚本以满足您的需要。不完全清楚您是否只想处理包含NVIDIA
的行
如果您这样做,那么根据您提供的信息,您可以尝试以下方法:
@Echo关闭
对于/F“令牌=2 Delims=Yy |”%%A(
“FindStr/I”显示[0-9]*|NVIDIA“File.txt”2^>Nul')是否回显%%A
暂停
如果您希望处理所有字符串内容,但仅提供了有关如何处理包含NVIDIA
的行的信息,这可能会有帮助:
@Echo关闭
对于/F UseBackDelims^=^EOL^=%%A,在(“File.txt”中
)是否设置/P“=%A”Nul 2>&1&&(
对于“%%A”中的/F“令牌=2 Delims=Yy |“%%B,执行回显%%B
)||我想做点别的
暂停
上面的例子使用了文本文件名,file.txt
,请根据需要进行调整。希望这篇文章的格式正确,很难阅读行差异。这对我的情况非常有用。我只想在包含“NVIDIA”的行上工作。因此,第一行代码就是我所看到的。你很好,这对我的案子很有效。我只想在包含“NVIDIA”的行上工作。因此,第一行代码就是我所看到的。你太棒了,很高兴听到你这么说;请考虑将您的首选答案标记为点击大检查标记到左边。我尝试了这个代码,它也工作了,但是我喜欢COMPO的建议,因为写的线少了。非常感谢你的帮助。
@ECHO OFF
setlocal enabledelayedexpansion
for /f "tokens=1,2" %%G in ('findstr /i "NVIDIA" "list.txt"') do (
set string=%%G
SET string=!string:*DISPLAY=%!
SET endbit=!string:*^|=%!
call set string=%%string:!endbit!=%%
If "!string!"=="7" (
:: Do some code for 7
echo string equals 7!
)
If "!string!"=="11" (
:: Do some code for 11
echo string equals 11!
)
If "!string!"=="15" (
:: Do some code for 15
echo string equals 15!
)
If "!string!"=="3" (
:: Do some code for 3
echo string equals 3!
))