2013-04-07 67 views
0

我正在使用批处理文件搜索特定文本(字符串组)是否存在于文件中。 这是我写的,但它不适用于文本。它只适用于字符串(不搜索文本)。使用批处理文件搜索特定文本(字符串组)是否存在于文件中

rem %1 is name of the file whose text is being found 
FindStr /C:%2 %1 
If %ERRORLEVEL% EQU 0 echo text %2 is Present 
If %ERRORLEVEL% EQU 1 echo text %2 is not Present 

例如,如果“吃早餐”的文本必须被搜索到包含文件“我每天吃早餐”,命令回声必须打印这一个: “文吃早餐存在”。

任何帮助!请。

回答

0

此文件完美地工作。

你需要找到你的文字的命令行是

yourbatch yourtextfile.txt "I have breakfast" 

如果执行

yourbatch yourtextfile.txt I have breakfast 

则因为空间是一个分隔符,将只搜索I,为了寻找一个空格分隔的字符串,您需要"报价字符串"

同样,就此而言,w如果文件名包含空格,则使用文件名。

yourbatch "your text file.txt" "I have breakfast" 


%%1 is "your text file.txt" 
%%2 is "I have breakfast" 

包括引号。

要删除引号,如果你想,你会使用%〜2

所以 - 你可以ECHO

ECHO with quotes:%2 and without: %~2 

ALSO:小心

If %ERRORLEVEL% EQU 0 echo text %2 is Present 
If %ERRORLEVEL% EQU 1 echo text %2 is not Present 

ECHO是少数不改变errorlevel的命令之一。很多人改变它,所以例如,如果你写

如果%ERRORLEVEL%EQU 0回声Y |找到 “X”> NUL 如果%ERRORLEVEL%EQU 1个回声文本%2不存在

那么如果发现echo Y|find "x" >nul是因为上一步中的errorlevel为0,那么因为echo Y|find "x" >nul将errorlevel设置为1,第二行也将被执行。

+0

这是伟大的!也感谢细节。 – tamo 2013-04-07 12:55:23

0

这应该工作,如果你调用脚本script.bat "file name" "search string"

@echo off&setlocal 
rem %1 is name of the file whose text is being found 
FindStr /C:"%~2" "%~1" >nul 
If %ERRORLEVEL% EQU 0 echo text %2 is Present 
If %ERRORLEVEL% EQU 1 echo text %2 is not Present 
0

你可以做到以下几点:

FindStr /C:"%~2" "%~1" >nul && echo text "I have breakfast is present". 
相关问题