for %%X in (myExecutable.exe) do (set FOUND=%%~$PATH:X)
if defined FOUND ...
Se você precisar disso para extensões diferentes, apenas repita PATHEXT
:
set FOUND=
for %%e in (%PATHEXT%) do (
for %%X in (myExecutable%%e) do (
if not defined FOUND (
set FOUND=%%~$PATH:X
)
)
)
Pode ser que where
também já exista em versões legadas do Windows, mas não tenho acesso a uma, então não posso dizer. Na minha máquina também funciona o seguinte:
where myExecutable
e retorna com um código de saída diferente de zero se não puder ser encontrado. Em um lote, você provavelmente também deseja redirecionar a saída NUL
.
Tenha em mente
A análise em .bat
arquivos batch ( ) e na linha de comando difere (porque os arquivos batch têm %0
- %9
), então você precisa dobrar o valor %
. Na linha de comando isso não é necessário, portanto, as variáveis são justas %X
.