for %%X in (myExecutable.exe) do (set FOUND=%%~$PATH:X)
if defined FOUND ...
Se ne hai bisogno per estensioni diverse, ripeti semplicemente PATHEXT
:
set FOUND=
for %%e in (%PATHEXT%) do (
for %%X in (myExecutable%%e) do (
if not defined FOUND (
set FOUND=%%~$PATH:X
)
)
)
Potrebbe essere che where
esista già sulle versioni precedenti di Windows, ma non ho accesso a uno, quindi non posso dirlo. Sulla mia macchina funziona anche quanto segue:
where myExecutable
e restituisce un codice di uscita diverso da zero se non è stato trovato. In un batch probabilmente vuoi anche reindirizzare l'output NUL
, però.
Tieni a mente
L'analisi nei .bat
file batch ( ) e sulla riga di comando è diversa (perché i file batch hanno %0
- %9
), quindi devi raddoppiare il valore %
there. Sulla riga di comando questo non è necessario, quindi per le variabili lo sono solo %X
.