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"