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.