2013-04-07 2 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 

ТАКЖЕ: будьте осторожны

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

ECHO является одной из немногих команд, которые НЕ меняют errorlevel. Многие DO изменить его, так, например, если вы напишете

Если% ERRORLEVEL% EQU 0 эхо Y | найти "х"> NUL Если% ERRORLEVEL% EQU 1 эхо текст% 2 нет

тогда, если был найден echo Y|find "x" >nul, потому что errorlevel с предыдущего шага был равен 0, то, поскольку echo Y|find "x" >nul устанавливает уровень ошибок в 1, будет выполняться вторая строка.

+0

Это здорово! Спасибо также за подробности. – tamo

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". 
Смежные вопросы