Как проверить, содержит ли текстовый файл определенный текст в пакетном режиме?

У меня есть текстовый файл в той же папке, где находится мой пакетный файл.

поэтому я хочу, чтобы мой командный файл читал содержимое текстового файла и в зависимости от содержимого этого текстового файла я хочу, чтобы он выполнял действие.

Например, если текстовый файл содержит "Hello World", тогда вам нужно запустить Start 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

Ответ 1

Вы должны использовать либо FIND, либо FINDSTR. Введите HELP FIND и HELP FINDSTR из командной строки, чтобы получить документацию. FIND очень прост и надежен. FINDSTR намного мощнее, но также и закалил. См. Каковы недокументированные функции и ограничения команды Windows FINDSTR? для получения дополнительной информации.

Вы не заботитесь о выходе любой из команд, поэтому вы можете перенаправить вывод на 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.
)

Вы также можете проверить ERRORLEVEL в инструкции IF, но я предпочитаю синтаксис выше.