Je veux trouver une chaîne dans un fichier en utilisant DOS:
Par exemple
rechercher "string" status.txt
Et quand il est trouvé, je veux exécuter un fichier batch.
Quelle est la meilleure façon de procéder?
@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
Cela fait un moment que je n'ai rien fait avec des fichiers batch mais je pense que ce qui suit fonctionne:
find /c "string" file
if %errorlevel% equ 1 goto notfound
echo found
goto done
:notfound
echo notfound
goto done
:done
C'est vraiment une preuve de concept; nettoyer comme il convient à vos besoins. La clé est que find
renvoie un errorlevel
de 1
si string
n'est pas dans file
. Nous nous branchons sur notfound
dans ce cas, sinon nous gérons le cas found
.
C:\test>find /c "string" file | find ": 0" 1>nul && echo "execute command here"
Nous avons deux commandes, la première est "condition_command", la seconde est "result_command". Si nous devons exécuter "result_command" lorsque "condition_command" réussit (errorlevel = 0):
condition_command && result_command
Si nous devons exécuter "result_command" lorsque "condition_command" échoue:
condition_command || result_command
Par conséquent, pour exécuter "some_command" dans le cas où nous avons "string" dans le fichier "status.txt":
find "string" status.txt 1>nul && some_command
au cas où nous n'aurions pas "string" dans le fichier "status.txt":
find "string" status.txt 1>nul || some_command
Comme la réponse est indiquée comme correcte, il s'agit d'un script d'invite Windows Dos et cela fonctionnera aussi:
find "string" status.txt >nul && call "my batch file.bat"