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 where
istnieje 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 .bat
plikach 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
.