Si vous connaissez le chemin où vous vous attendez à trouver le fichier EXE, il est assez facile:
IF EXIST C:\Windows\wget.exe (*** do something with it ***)
... vous pourrait bien sûr faire IF NOT EXIST
avec un texte de présentation pour le copier, ou utilisez une instruction ELSE
.
Sinon, si vous ne savez pas où vous pouvez trouver le fichier, vous pouvez chercher avec quelque chose comme ça (source originale trouvé here):
@echo off
SETLOCAL
(set WF=)
(set TARGET=wget.exe)
:: Look for file in the current directory
for %%a in ("" %PATHEXT:;= %) do (
if not defined WF if exist "%TARGET%%%~a" set WF=%CD%\%TARGET%%%~a)
:: Look for file in the PATH
for %%a in ("" %PATHEXT:;= %) do (
if not defined WF for %%g in ("%TARGET%%%~a") do (
if exist "%%~$PATH:g" set WF=%%~$PATH:g))
:: Results
if defined WF (
*** do something with it here ***
) else (
echo The file: "%~1" was not found
)
Vous pouvez envelopper ce bloc entier dans un la fonction et l'appeler une fois pour chaque EXE (changer les %TARGET%
de nouveau dans %~1
, lui donner un: TITRE, puis call :TITLE wget.exe
) ...
Alternativement, vous pouvez prendre une approche différente et essayez les commandes et voir si elles échouer. Depuis ERRORLEVEL de 0 signifie généralement le succès, vous pourriez faire quelque chose comme ceci:
wget -q <TARGET_URL>
IF NOT ERRORLEVEL 0 (
curl <TARGET_URL>
IF NOT ERRORLEVEL 0 (
ECHO Download failed!
EXIT 1
)
)
:: now continue on with your script...
Incidemment, le site [http://ss64.com/nt/](http://ss64.com/nt/) est une excellente ressource pour NT CMD Shell Conseils & Astuces. (Et ne manquez pas la page [syntaxe] (http://ss64.com/nt/syntax.html)!) – ewall
La deuxième approche semble assez bonne pour moi. Je pense que la recherche allongera inutilement le temps d'exécution du script. – Berming