for %%X in (myExecutable.exe) do (set FOUND=%%~$PATH:X)
if defined FOUND ...
Если вам нужно это для разных расширений, просто итерируйте по PATHEXT
:
set FOUND=
for %%e in (%PATHEXT%) do (
for %%X in (myExecutable%%e) do (
if not defined FOUND (
set FOUND=%%~$PATH:X
)
)
)
Возможно, where
уже существует в старых версиях Windows, но у меня нетдоступ к одному, так что я не могу сказать.На моей машине также работает следующее:
where myExecutable
и возвращается с ненулевым кодом выхода, если он не может быть найден.В пакете вы, вероятно, также хотите перенаправить вывод в NUL
, однако.
Помните
Анализ в пакетных (.bat
) файлах икомандная строка отличается (потому что командные файлы имеют %0
- %9
), поэтому вы должны удвоить %
там.В командной строке это не обязательно, поэтому для переменных просто %X
.