2012-11-20 108 views
10

我有我的批处理文件在同一文件夹中的文本文件。
如何检查文本文件是否批量包含某些文本?

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

例如,如果文本文件包含“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 
+0

我觉得[这个问题](http://stackoverflow.com/questions/106053/how-can-i-make-a-batch-file-to-act-like-a-simple-grep-using- perl)有你在找什么 – zbrunson

回答

24

您应该使用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,但我更喜欢上面的语法。

+0

没关系了@echo关闭:)非常感谢。 – Mowgli

+0

嗨,我有问题希望你能帮助我,而不是log.txt,有没有办法我可以把URL只有一个数据链接。谢谢 – Mowgli

+0

似乎不适合我。 (Hello World永远不会被发现) – Cestarian

相关问题