whereisに相当するWindows?


回答:


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で)実行すると、私のお気に入りのメッセージの1つが表示されます。

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
毎日、私は新しい何か...学ぶ
ルーベンスMariuzzo

4
悲しいの種類whereだけで自分のためにそれを見たかったのWindows 7になりました使用方法のヘルプを返します:P
Svish

2
whereXPでは利用できません
トムロジェロ14

1
@TomRoggero、もっと明確にできたかもしれない。これは、Windows 98以降のオプションのリソースキットの一部であり、XP以降のバージョンの基本インストールにのみ含まれています。
ケビン14

7

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環境変数で見つかったすべての拡張子を含める必要があります。
ケビン

私はここでそれを貼り付ける際にyahの、これは私のハック少し古いですが、私は即座の可能性を見%PATHEXT%:)
アキラ

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は単に「ファイルが見つかりません」と表示します。
bobmcn

4
これは、a)ドライブのルートから検索する場合、b)パスがすべて1つのドライブ上にある場合、およびc)パスが辞書式順序である場合に機能します。これらの条件下でも、とてつもなく遅いでしょう。
ケビン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.