Where.exe 사용법: 윈도우의 which 명령어
리눅스(Linux) 셸에서는 특정 실행 파일의 경로를 확인하고 싶을 때 which 명령어를 사용합니다. 예를 들어 ping
명령어를 실행했을 때, 실행되는 명령어의 전체 경로를 다음과 같이 확인할 수 있습니다.
$ which ping
/bin/ping
- 관련 글: which 명령어: 실행 파일 디렉터리 출력
윈도우에서도 리눅스 명령어 이름을 빌려온 경우가 많습니다만, which 명령어는 존재하지 않습니다. 대신 실행 파일 전체 경로를 확인하는 용도로 where.exe
를 사용할 수 있습니다. 이 글에서는 윈도우의 where.exe
사용법을 소개합니다.
where.exe로 실행 파일 경로 찾기
where.exe
첫 번째 인자로 실행 파일 이름을 지정하면, Path 환경변수를 탐색해 해당 실행 파일의 위치를 알려줍니다. 예를 들어 ping
명령어의 위치를 확인해보겠습니다.
$ where.exe ping
C:\Windows\System32\PING.EXE
C:\Windows\System32
아래의 PING.EXE
파일이 실행되는 것을 확인할 수 있습니다.
다른 예로 Chocolatey로 설치한 ffmpeg
실행파일의 위치도 확인해보겠습니다.
$ where.exe ffmpeg
C:\ProgramData\chocolatey\bin\ffmpeg.exe
C:\ProgramData\chocolatey\bin\
아래에 실행 파일이 있는 것을 확인할 수 있습니다.
탐색 대상이 되는 경로는 $Env:Path를 출력해서 확인할 수 있습니다. 아래 출력 결과에서 C:\WINDOWS\system32
와 C:\ProgramData\chocolatey\bin\
디렉터리를 확인할 수 있습니다.
$ $Env:Path
C:\WINDOWS\system32;C:\ProgramData\chocolatey\bin\;...
where.exe로 파일 검색하는 방법
where.exe
는 실행 파일의 경로를 찾을 뿐만 아니라 특정 위치를 지정해서 파일을 검색할 수도 있습니다. 사용법은 다음과 같습니다.
where.exe /R <검색대상경로> <검색패턴>
예를 들어 C:\Windows\System32
에서 Auth*.dll
패턴을 검색하고 싶다면 다음과 같이 실행합니다.
$ where.exe /R 'C:\Windows\System32' 'Auth*.dll'
C:\Windows\System32\AuthBroker.dll
C:\Windows\System32\AuthBrokerUI.dll
C:\Windows\System32\authentication.dll
C:\Windows\System32\AuthExt.dll
C:\Windows\System32\authfwcfg.dll
검색 패턴에서는 *
와 ?
와일드 카드를 사용할 수 있습니다. *
는 0글자 이상에 매치되고, ?
는 정확히 한 글자에 매치됩니다.
where.exe 도움말
여기까지 where.exe
의 기본적인 사용법에 대해서 알아보았습니다. where.exe
명령어에 /?
옵션을 붙여서 실행하면 더 자세한 사용법을 확인할 수 있습니다.
$ where.exe /?
WHERE [/R dir] [/Q] [/F] [/T] pattern...
설명:
검색 패턴에 해당되는 파일의 위치를 표시합니다.
기본값으로 현재 디렉터리 및 PATH 환경 변수에 지정된 경로를
검색합니다.
매개 변수 목록:
/R 지정된 디렉터리부터 시작하여 제공된 패턴과 일치하는
파일을 재귀적으로 검색하고 표시합니다.
/Q 일치하는 파일 목록을 표시하지 않고 종료 코드만
반환합니다(자동 모드).
/F 일치하는 파일 이름을 큰따옴표로 묶어 표시합니다.
/T 일치하는 모든 파일의 파일 크기, 마지막 수정한 날짜
및 시간을 표시합니다.
pattern 파일에서 검색할 검색 패턴을 지정합니다.
패턴에 * 및 ? 와일드카드를 사용할 수 있습니다.
"$env:pattern" 및 "path:pattern" 포맷도 지정할 수 있습니다.
"env"는 환경 변수이며 "env" 환경 변수에 지정된 경로에서
검색을 수행합니다.
/R과 더불어 이 포맷을 사용할 수 없습니다.
패턴에 PATHEXT 변수의 확장을 추가하여 검색할 수도
있습니다.
/? 이 도움말 메시지를 표시합니다.
참고: 검색이 성공하면 오류 수준 0이 반환되며, 해당 항목을
찾을 수 없으면 1이 반환되고 검색이 실패하거나 오류가
발생하면 2가 반환됩니다.
예:
WHERE /?
WHERE myfilename1 myfile????.*
WHERE $windir:*.*
WHERE /R c:\windows *.exe *.dll *.bat
WHERE /Q ??.???
WHERE "c:\windows;c:\windows\system32:*.dll"
WHERE /F /T *.dll