如何检查文本文件是否包含批量的某些文本?

时间:2012-11-20 15:37:14

标签: batch-file

我的文件文件与我的批处理文件所在的文件夹相同。

所以我希望我的批处理文件读取文本文件的内容,并根据该文本文件的内容,我希望它执行操作。

例如,如果文本文件包含“Hello World”,那么就像启动VLC一样 如果它不包含Hello World,那么就做其他事情。

文本将自行更新。

这是我的批处理代码到目前为止,它可以在屏幕上输出文本文件中的文本。

@echo off
for /f "tokens=*" %%a in (log.txt) do call :processline %%a

pause
goto :eof

:processline
echo line=%*

goto :eof

:eof

2 个答案:

答案 0 :(得分:31)

您应该使用FIND或FINDSTR。从命令提示符处键入HELP FINDHELP FINDSTR以获取文档。 FIND非常简单可靠。 FINDSTR更强大,但也很温和。有关详细信息,请参阅What are the undocumented features and limitations of the Windows FINDSTR command?

您不关心任何一个命令的输出,因此您可以将输出重定向到nul。

如果找到字符串,则两个命令都将ERRORLEVEL设置为0;如果找不到字符串,则将命令设置为1。您可以使用&&||运算符有条件地执行代码,具体取决于是否找到字符串。

>nul find "Hello World" log.txt && (
  echo "Hello World" was found.
) || (
  echo "Hello World" was NOT found.
)

>nul findstr /c:"Hello World" log.txt && (
  echo "Hello World" was found.
) || (
  echo "Hello World" was NOT found.
)

你也可以在IF语句中测试ERRORLEVEL,但我更喜欢上面的语法。

答案 1 :(得分:0)

这是另一种可行的方法。该代码使用findstr指令在文本文件中查找并查找特定的字符串……返回错误级别0(如果找到)或错误级别1(如果没有找到字符串)。

findstr /m "Findme" Log.txt >Nul
if %errorlevel%==0 (
echo "Findme" was found within the Log.txt file!
)

if %errorlevel%==1 (
echo "Findme" wasn't found within the Log.txt file!
)
pause