DOS: найдите строку, если она найдена, запустите еще один script

Я хочу найти строку в файле с помощью DOS:

Например

найти "string" status.txt

И когда он будет найден, я хочу запустить пакетный файл.

Каков наилучший способ сделать это?

Ответы

Ответ 1

@echo off
cls
MD %homedrive%\TEMPBBDVD\
CLS
TIMEOUT /T 1 >NUL
CLS
systeminfo >%homedrive%\TEMPBBDVD\info.txt
cls
timeout /t 3 >nul
cls
find "x64-based PC" %homedrive%\TEMPBBDVD\info.txt >nul
if %errorlevel% equ 1 goto 32bitsok
goto 64bitsok
cls

:commandlineerror
cls
echo error, command failed or you not are using windows OS.
pause >nul
cls
exit

:64bitsok
cls
echo done, system of 64 bits
pause >nul
cls
del /q /f %homedrive%\TEMPBBDVD\info.txt >nul
cls
timeout /t 1 >nul
cls
RD %homedrive%\TEMPBBDVD\ >nul
cls
exit

:32bitsok
cls
echo done, system of 32 bits
pause >nul
cls
del /q /f %homedrive%\TEMPBBDVD\info.txt >nul
cls
timeout /t 1 >nul
cls
RD %homedrive%\TEMPBBDVD\ >nul
cls
exit

Ответ 2

Прошло некоторое время, так как я сделал что-то с пакетными файлами, но я думаю, что следующие работы:

find /c "string" file
if %errorlevel% equ 1 goto notfound
echo found
goto done
:notfound
echo notfound
goto done
:done

Это действительно доказательство концепции; очистите, поскольку это соответствует вашим потребностям. Ключ в том, что find возвращает errorlevel из 1, если string не находится в file. Мы переходим к notfound, в противном случае мы обрабатываем случай found.

Ответ 3

C:\test>find /c "string" file | find ": 0" 1>nul && echo "execute command here"

Ответ 4

У нас есть две команды: сначала "condition_command" , вторая - "result_command". Если нам нужно запустить команду result_command, когда "condition_command" успешно (errorlevel = 0):

condition_command && result_command

Если нам нужно запустить команду result_command, когда "condition_command" сбой:

condition_command || result_command

Поэтому для запуска "some_command" в случае, когда у нас есть "строка" в файле "status.txt":

find "string" status.txt 1>nul && some_command

в случае, если в файле "status.txt" нет "string":

find "string" status.txt 1>nul || some_command

Ответ 5

По мере того, как ответ помечен правильно, это приглашение Windows Dos script, и это тоже будет работать:

find "string" status.txt >nul && call "my batch file.bat"