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

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

任何帮助!请。

4

3 回答 3

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
于 2013-04-07T13:23:51.630 回答
0

您可以执行以下操作:

FindStr /C:"%~2" "%~1" >nul && echo text "I have breakfast is present".
于 2013-04-08T14:29:39.793 回答
0

该文件完美运行。

您需要查找文本的命令行是

yourbatch yourtextfile.txt "I have breakfast"

如果你执行

yourbatch yourtextfile.txt I have breakfast

那么它会简单地搜索,I因为 SPACE 是一个分隔符,并且为了搜索以空格分隔的字符串,您需要"引用该字符串"

就此而言,如果您的文件名包含空格,则与文件名相同。

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

另外:小心

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|find "x" >nul 如果 %ERRORLEVEL% EQU 1 回显文本 %2 不存在

然后如果echo Y|find "x" >nul因为errorlevel上一步的值为 0 而找到了,那么因为echo Y|find "x" >nul将 errorlevel 设置为 1,第二行也将被执行。

于 2013-04-07T12:24:47.157 回答