Windows는 어디에 있습니까?


164

Windows에 Unix whereis 명령 과 동일한 기능이 있습니까?

실제로 실행할 수있는 명령이 어디 있는지 알아낼 수 있습니다.

답변:


203

곳의 명령은 당신이 원하는 것을 및 Windows 98 리소스 키트에 적어도 돌아갑니다, 및 Server 2003에 기본적으로 포함되어, Vista 및 새로운 :

C:\>where csc
C:\Windows\Microsoft.NET\Framework\v3.5\csc.exe
C:\Windows\Microsoft.NET\Framework\v2.0.50727\csc.exe

Vista에서 인수없이 실행하면 내가 좋아하는 메시지 중 하나가 나타납니다.

C:\>where
ERROR: The operation completed successfully.

PowerShell에서 실행하는 경우 경로를 따라 'where'별칭 또는 스크립트와 구별되도록 '.exe'를 포함해야합니다. 'where'는 Where-Object.ps1의 일반적인 별칭입니다.

C:\> where.exe where.exe
C:\Windows\System32\where.exe

4
매일 새로운 것을 배우고 있습니다.
Rubens Mariuzzo

4
슬픈 where일이 이제 Windows 7에서 사용 도움말을 반환합니다. p
Svish

2
whereXP에서는 사용할 수 없음
Tom Roggero

1
@TomRoggero, 나는 더 분명했을 수 있습니다. Windows 98부터 옵션 리소스 키트의 일부이며 XP 이후 버전의 기본 설치에만 포함됩니다.
케빈

7

hackerish which.cmd :

@echo off
@set PATH=.;%PATH%

@rem 
@rem about:  something similar like the unix-alike-which, but with
@rem         within pure cmd
@rem 

if "%1" == "" (
    @echo Usage: 
    @echo.
    @echo   which 'cmd'
    @echo.
    @echo.if 'cmd' is not found, ERRORLEVEL is set to 1
    @echo.  
) else (
    ( @for %%f in (%1 %1.exe %1.cmd %1.bat %1.pif) do if not "%%~$PATH:f" == "" ( @echo %%~$PATH:f ) else @set ERRORLEVEL=1) 
)

1
이것은 오래된 시스템에 대한 올바른 수정이지만 몇 가지 단점이 있음을 알아야합니다. 디렉토리와 일치하고 각 확장자의 경로에서 찾은 첫 번째 결과 만 리턴하며 PATHEXT 환경 변수에서 찾은 모든 확장자를 포함해야합니다.
Kevin

yah, 이것은 내 오래된 약간의 해킹입니다. 여기에 붙여 넣을 때 나는 즉시 % PATHEXT %의 가능성을 보았습니다 :)
akira

7

where 명령을 사용하십시오 :

> where app.exe

목표를 달성하는 가장 좋은 방법입니다.

PowerShell 명령을 사용할 수도 있습니다.

> $env:path.Split(';') | gci -Filter app.exe

확장 버전은 다음과 같습니다.

 > $env:path.Split(';') | select -Unique | ? {$_ -and (test-path $_)} | gci -Filter app.exe

3

어딘가 "아무것도"이 배치 파일을 찾았습니다 whereis.bat.

@for %%e in (%PATHEXT%) do @for %%i in (%1%%e) do @if NOT "%%~$PATH:i"=="" echo %%~$PATH:i

업데이트 : 어쩌면 여기 에서 찾았습니다 .



1
function find ($string) { 
   Get-ChildItem -Path 'c:\' -Recurse -Filter $string; 
}

function whereis ($string) { 
   $superpath = "$env:Path;C:\Program Files;C:\Program Files (x86)";
   (echo $superpath).Split(';') | Get-ChildItem -Recurse -Filter $string; 
}

예:

PS> Mozilla.admx 찾기

    Directory: C:\Windows\PolicyDefinitions                                                                                     

Mode                LastWriteTime         Length Name                                                                           
----                -------------         ------ ----                                                                           
-a----        1/27/2016  12:22 PM          37146 Mozilla.admx                                                                   

PS> whereis firefox.exe

    Directory: C:\Program Files\Mozilla Firefox                                                                                 

Mode                LastWriteTime         Length Name                                                                           
----                -------------         ------ ----                                                                           
-a----        9/21/2017   5:30 PM         477136 firefox.exe        

0

나는 오늘 이것을 찾고 있었고 리소스 키트가없는 XP를 사용하고 있기 때문에 다음 명령으로 powershell을 사용했습니다.

dir -path c:\ -filter ffmpeg.* -r

powershell에 능숙하지 않지만 전체 디렉토리 트리를 검색하는 것 같습니다. 이 일치하지 않는 where단지에서 검색하는 %PATH%. 또한 읽기 권한이없는 폴더에는 속도가 훨씬 느리고 오류가 발생합니다.
phuclv

동의 함 ... 기능의 정확한 사본이 필요하지 않고 프로그램을 찾는 기능 만 필요했습니다.
KalenGi

-1

다음을 사용하여 명령을 검색 할 수 있습니다.

dir /s type-whatever-you-are-searching

이것은 나를 위해 작동하지 않습니다. 예를 들어, exp 명령은 내 경로에 있지만 dir / s exp 또는 dir / s exp.exe는 "File Not Found"를 제공합니다.
bobmcn

4
a) 드라이브의 루트에서 검색, b) 경로가 모두 하나의 드라이브에 있고 c) 경로가 사전 순으로되어있는 경우에 작동합니다. 이러한 상황에서도 말도 안되게 느려질 것입니다.
Kevin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.