Если вы знаете путь, по которому вы ожидаете найти EXE, это довольно просто:
IF EXIST C:\Windows\wget.exe ( *** do something with it ***)
... конечно, вы можете сделать IF NOT EXIST
с рекламой, чтобы скопировать ее, илииспользуйте оператор ELSE
.
В противном случае, если вы не знаете, где вы можете найти файл, вы можете найти его с помощью чего-то вроде этого (оригинальный источник найден здесь ):
@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
)
Вы можете заключить весь блок в функцию и вызывать его один раз для каждого EXE (замените %TARGET%
обратно на %~1
, присвойте ему: TITLE, затем call :TITLE wget.exe
)...
С другой стороны, вы могли бы использовать другой подход и просто попробовать команды и посмотреть, не сработают ли они.Поскольку ERRORLEVEL 0 обычно означает успех, вы можете сделать что-то вроде этого:
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...