@ECHO OFF :: Check Windows version IF "%OS%"=="Windows_NT" (SETLOCAL) ELSE (GOTO Syntax) :: Check command line argument IF "%~1"=="" GOTO Syntax IF NOT "%~2"=="" GOTO Syntax ECHO.%1 | FIND /V ":" | FIND /V "\" | FIND /V "*" | FIND /V "?" | FIND /V "," | FIND /V ";" | FIND /V "/" | FIND "%~1" >NUL IF ERRORLEVEL 1 GOTO Syntax :: Initialize variable SET Found= :: Search current directory first, then PATH, for the "pure" :: file name itself or one of the extensions defined in PATHEXT. :: Add quotes to match directory names with spaces as well. SET Path="%CD%";"%Path:;=";"%" :: This command line was rewritten by Yakov Azulay. FOR %%A IN (%Path%) DO FOR %%B IN (.;%PathExt%) DO IF EXIST "%%~A.\%~1%%~B" CALL :Found "%%~A.\%~1%%~B" :: Display the result ECHO. IF DEFINED Found (ECHO.%Found%) ELSE (ECHO -None-) :: Done GOTO End :Found :: Stop after finding the first match IF DEFINED Found GOTO:EOF :: Store the first match found SET Found=%~f1 GOTO:EOF :Syntax ECHO. ECHO WHICH, Version 3.00 ECHO UNIX-like WHICH utility for Windows NT 4 / 2000 / XP ECHO. ECHO Usage: WHICH program_name ECHO. ECHO You may specify the program_name with or without ECHO extension, but no wildcards, nor drive, nor path. ECHO. ECHO Written by Yakov Azulay ECHO and Rob van der Woude ECHO http://www.robvanderwoude.com :End IF "%OS%"=="Windows_NT" ENDLOCAL