Windows의 명령 행에서 실행할 프로그램 경로 찾기


128

시스템의 X.EXE폴더 c:\abcd\happy\에 프로그램이 설치되어 있다고 가정 해보십시오 . 폴더는 시스템 경로에 있습니다. 이제 시스템에 X.EXE라고하지만 폴더에 설치되어있는 다른 프로그램이 있다고 가정합니다 c:\windows\.

명령 줄 X.EXE에서 두 가지 중 어느 것을 입력하면 빠르게 찾을 수 있습니까?X.EXE 있습니까? (하지만 작업 관리자에서 프로세스를 자세히 보거나 검색하지 않아도됩니다).

어쩌면 일종의 내장 명령 또는 이와 같은 것을 수행 할 수있는 프로그램이 있습니까? :

detect_program_path X.EXE

답변:


239

where명령을 사용하십시오 . 목록의 첫 번째 결과는 실행될 결과입니다.

C : \> 메모장
C : \ Windows \ System32 \ notepad.exe
C : \ Windows \ notepad.exe

에 따르면 이 블로그 게시물 , where.exe이것은 단지 등 비스타, 윈도우 7, 작업을해야하므로, 나중에 윈도우 서버 2003에 포함된다.

Linux에서 해당하는 which명령 은 다음과 같습니다 ( 예 :) which ssh.


2
+1! 나는 이것이 Windows의 일부가 될 수 있다는 것을 결코 알지 못했기 때문에 그 방향을 보지 않았습니다! :)
Zabba

1
열악한 xp 사용자에 해당하는 것이 있습니까?
shahar_m

@ shahar_m : Michael Burr에서 아래 스크립트를 사용해 보셨습니까? 내장되어 있지 않지만 필요한 작업을 수행 할 수 있습니다.
Chris Schmich

1
@Kenny : DLL의 이름을 알고 있다고 가정하면 ListDLLs 유틸리티 ( technet.microsoft.com/en-us/sysinternals/bb896656 )를 사용할 수 있습니다 . 명령 행 listdlls -d foo.dll에서 모듈을로드 한 모든 프로세스와로드 된 모듈의 전체 경로를 보려면 실행 하십시오. 또는 파일 이름으로 Windows 파일을 검색 할 수 있습니다.
Chris Schmich

2
@ 케니 : 당신이 요구하는 것은 여기에 게시 된 답변과 매우 다릅니다. 어떤 연구를 수행했는지에 대한 새로운 스택 오버플로 질문을 작성하고 이러한 의견에 링크를 게시해야합니다.
크리스 슈 미치

10

다음은 다음과 같은 이름의 파일에 복사하여 붙여 넣을 수있는 작은 cmd 스크립트입니다 where.cmd.

@echo off
rem - search for the given file in the directories specified by the path, and display the first match
rem
rem    The main ideas for this script were taken from Raymond Chen's blog:
rem
rem         http://blogs.msdn.com/b/oldnewthing/archive/2005/01/20/357225.asp
rem
rem
rem - it'll be nice to at some point extend this so it won't stop on the first match. That'll
rem     help diagnose situations with a conflict of some sort.
rem

setlocal

rem - search the current directory as well as those in the path
set PATHLIST=.;%PATH%
set EXTLIST=%PATHEXT%

if not "%EXTLIST%" == "" goto :extlist_ok
set EXTLIST=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
:extlist_ok

rem - first look for the file as given (not adding extensions)
for %%i in (%1) do if NOT "%%~$PATHLIST:i"=="" echo %%~$PATHLIST:i

rem - now look for the file adding extensions from the EXTLIST
for %%e in (%EXTLIST%) do @for %%i in (%1%%e) do if NOT "%%~$PATHLIST:i"=="" echo %%~$PATHLIST:i

8

는 AS 스레드가 주석에 언급, get-commandPowerShell에서 또한 그것을 해결할 수 있습니다. 예를 들어, 입력 할 수 get-command npm있으며 출력은 다음과 같습니다.

여기에 이미지 설명을 입력하십시오


(get-command npm).Source모든 속성의 전체 테이블 대신 npm에 대한 경로 (예를 들어)로 응답합니다.
David Brown
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.