for %%X in (myExecutable.exe) do (set FOUND=%%~$PATH:X)
if defined FOUND ...
Jeśli potrzebujesz tego dla różnych rozszerzeń, po prostu powtórz PATHEXT:
set FOUND=
for %%e in (%PATHEXT%) do (
for %%X in (myExecutable%%e) do (
if not defined FOUND (
set FOUND=%%~$PATH:X
)
)
)
Możliwe, że whereistnieje już w starszych wersjach systemu Windows, ale nie mam dostępu do jednej, więc nie mogę powiedzieć. Na moim komputerze działa również:
where myExecutable
i zwraca z niezerowym kodem zakończenia, jeśli nie można go znaleźć. Jednak w przypadku wsadu prawdopodobnie chcesz również przekierować dane wyjściowe do NUL.
Pamiętać
Parsowanie w .batplikach batch ( ) iw wierszu poleceń różni się (ponieważ pliki wsadowe mają %0- %9), więc musisz podwoić to %. W linii poleceń nie jest to konieczne, więc dla zmiennych są po prostu %X.