Windows에서 실행 파일의 위치를 ​​찾으려면 어떻게합니까? 위해 as이라는

where콘솔에서 다음과 같은 실행 프로그램의 위치를 ​​찾기 위해 as이라는 도구를 사용했음을 기억했습니다 .

 C:\Tmp\Where myTool.exe
 C:\Program Files\MyApp\myTools.exe
 ....

이제이 도구를 찾을 수 없습니다. Windows에 해당 검색을위한 기본 제공 도구가 있는지 확실하지 않습니까?



답변

StackOverflow의 답변에 따르면 Windows에는 ‘어떤 것’에 해당합니까? , where.exe이것은 Windows 7 및 Windows Server 2003 이상을 수행합니다

C:\> where ping

산출:

C:\Windows\System32\PING.EXE

답변

편집 : 명령 프롬프트에서 WHERE 명령을 사용할 수 없으면 PATH 변수를 확인하십시오. “path”명령 만 사용하십시오. C : \ Windows \ System32가 경로에 있는지 확인하십시오. “where.exe”가있는 위치입니다.

당신이 찾고있는 명령이 어디에 있습니까! WHERE는 명령 실행 파일과 일반 파일 모두에서 작동한다는 점에서 UNIX 쉘 내장 “which”와 “locate”명령의 교차점과 같습니다.

일반적으로 단순하지만, 둘 중 어느 것보다 다소 복잡

WHERE <file>

작동합니다.

“locate”명령과는 달리 전체 파일 시스템을 살펴 보지 않습니다. 대신 기본 동작은 두 위치에서 파일을 찾는 것입니다.

  • 현재 디렉토리
  • PATH 변수의 모든 디렉토리

따라서 디렉토리를 지정하지 않고 명령 프롬프트에서 직접 실행할 수있는 모든 명령은 WHERE 명령으로 찾을 수 있습니다. (이와 같은 명령은 이미 PATH 변수 목록에 있습니다.)

명령 경로 변수 에서만 검색하려는 경우 다음 을 사용할 수 있습니다.

WHERE "$path:<search text>"

반면에 디렉토리 트리에서 파일의 모든 사본을 찾으려면 다음을 사용할 수 있습니다.

WHERE /R <Top Level Directory> <search text>

마지막으로, WHERE는 확장자를 포함하지 않고 PATHEXT 변수에서 확장자가있는 명령 및 파일을 찾습니다. 다른 모든 파일은 정확하게 또는 와일드 카드로 지정해야합니다.

예를 들어 “dxdiag.exe”및 “dxdiagn.dll”파일을 예로들 수 있습니다. 다음 명령 및 해당 출력에 유의하십시오.

WHERE /R C:\Windows dxdiag

C:\Windows\System32\dxdiag.exe
C:\Windows\SysWOW64\dxdiag.exe
C:\Windows\WinSxS\amd64_microsoft-windows-d..x-directxdiagnostic_31bf3856ad364e35_6.2.9200.16384_none_7c8d3f96e7882ec7\dxdiag.exe
C:\Windows\WinSxS\x86_microsoft-windows-d..x-directxdiagnostic_31bf3856ad364e35_6.2.9200.16384_none_206ea4132f2abd91\dxdiag.exe

“.exe”는 PATHEXT 변수의 확장 중 하나이므로 모든 버전의 “dxdiag.exe”를 반환하는 데 성공합니다. (참고 : C : \ Windows \ System32가 PATH 변수에 있으므로 “WHERE dxdiag”도 작동했을 것입니다.)

WHERE /R C:\Windows dxdiagn

다른 한편으로는, “.DLL”가 있기 때문에, 어떤 결과를 반환하지 하지 PATHEXT에.

이 경우 와일드 카드를 추가하면 다음과 같은 결과를 얻을 수 있습니다.

WHERE /R C:\Windows dxdiagn*

C:\Windows\System32\dxdiagn.dll
C:\Windows\System32\en-US\dxdiagn.dll.mui
C:\Windows\SysWOW64\dxdiagn.dll
C:\Windows\SysWOW64\en-US\dxdiagn.dll.mui
C:\Windows\WinSxS\amd64_microsoft-windows-d..iagnostic.resources_31bf3856ad364e35_6.2.9200.16384_en-us_daccd04369b09c70\dxdiagn.dll.mui
C:\Windows\WinSxS\amd64_microsoft-windows-d..x-directxdiagnostic_31bf3856ad364e35_6.2.9200.16384_none_7c8d3f96e7882ec7\dxdiagn.dll
C:\Windows\WinSxS\x86_microsoft-windows-d..iagnostic.resources_31bf3856ad364e35_6.2.9200.16384_en-us_7eae34bfb1532b3a\dxdiagn.dll.mui
C:\Windows\WinSxS\x86_microsoft-windows-d..x-directxdiagnostic_31bf3856ad364e35_6.2.9200.16384_none_206ea4132f2abd91\dxdiagn.dll

dxdiagn.dll의 모든 버전을 성공적으로 반환 합니다 .

자세한 내용은 “WHERE /?”를 사용하십시오. 도움이 되었기를 바랍니다!


답변

사용 dir:

cd \
dir /s /b mytool.exe

cd \부분은 계층 구조의 상단에있는 검색 시작을 보장하기 위해, 드라이브의 루트로 변경됩니다.


답변

PowerShell의 경우 약간 다를 수 있습니다.

PS C:\Users\Rob.wb-devel> where ping

PS C:\Users\Rob.wb-devel> where git

PS C:\Users\Rob.wb-devel> whereis.bat git
C:\Program Files (x86)\Git\cmd\git.exe

PS C:\Users\Rob.wb-devel> where.exe git
C:\Program Files (x86)\Git\cmd\git.exe

답변

간단한 명령으로 내장되어 있지 않다는 것에 실망합니다.

그러나 몇 가지 솔루션이 있으며 그중 하나는 배치 파일 입니다.

다음과 같이 배치 파일 (which.bat)을 작성하십시오.

@setlocal
@set P2=.;%PATH%
@for %%e in (%PATHEXT%) do @for %%i in (%~n1%%e) do @if NOT "%%~$P2:i"=="" echo %%~$P2:i

이것은 로컬 디렉토리를 찾고 확장명을 포함하거나 포함하지 않는 filename 매개 변수를 사용하여 현재 디렉토리 또는 PATH에서 첫 번째 일치 항목을 리턴합니다.

그런 다음에 which cmd.exe입력하면 실행할 cmd.exe를 찾는 것처럼 실행하십시오 cmd.


답변

Windows에서는 무료 유틸리티 인 Everything 검색 엔진 을 사용하여 전체 또는 부분 이름으로 파일을 즉시 검색 할 수 있습니다 (하드 디스크가 ntfs로 포맷 된 경우).


답변

그냥 원하는 경우 어떤GnuWin32의 프로젝트는 유닉스 유틸 개별 설치와의 무리가 있습니다.