for %%X in (myExecutable.exe) do (set FOUND=%%~$PATH:X)
if defined FOUND ...
Si necesita esto para diferentes extensiones, simplemente repita PATHEXT
:
set FOUND=
for %%e in (%PATHEXT%) do (
for %%X in (myExecutable%%e) do (
if not defined FOUND (
set FOUND=%%~$PATH:X
)
)
)
Podría ser que where
ya exista en versiones heredadas de Windows, pero no tengo acceso a una, así que no puedo decirlo. En mi máquina también funciona lo siguiente:
where myExecutable
y regresa con un código de salida distinto de cero si no se pudo encontrar. Sin NUL
embargo, en un lote al que probablemente también desee redirigir la salida .
Tenga en cuenta
El análisis en .bat
archivos por lotes ( ) y en la línea de comandos es diferente (porque los archivos por lotes tienen %0
- %9
), por lo que debe duplicar el valor de %
allí. En la línea de comandos, esto no es necesario, por lo que las variables son solo %X
.