2012-11-20 96 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

相關問題