Whereis eşdeğeri Windows mu?


164

Windows'taki Unix whereis komutunun bir karşılığı var mı ?

Böylece, hangi komutları çalıştırabileceğimi öğrenebilirdim.

Yanıtlar:


203

Nerede komut istediğini yapar ve Windows 98 için kaynak seti için en az gider ve Server 2003'te varsayılan olarak dahil edilir, Vista ve daha yeni:

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

Argüman olmadan çalıştırılırsa (Vista'da), en sevdiğim mesajlardan biriyle sonuçlanır:

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

PowerShell'de çalıştırılıyorsa, yol boyunca takma ad veya komut dosyalarından ayırt etmek için '.exe' kullandığınızdan emin olun. ('where' Where-Object.ps1 için tipik bir diğer addır)

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

4
Her gün yeni bir şeyler öğreniyorum ...
Rubens Mariuzzo

4
Üzücü Kind wherep: Sadece Windows 7 kendi gözlerimle görmek istedim şimdi kullanım yardım döndürür
Svish

2
whereXP'de mevcut değil
Tom Roggero

1
@ TomRoggero, daha net olabilirdim. Windows 98 ile başlayan isteğe bağlı kaynak setinin bir parçasıdır ve yalnızca XP sonrası sürümler için temel kurulumda bulunur.
Kevin,

7

hackerish hangi.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
Bu eski sistemler için iyi bir çözümdür, ancak birkaç tuhaflığa neden olduğunu bilmelisiniz. Dizinlerle eşleşir, yalnızca her uzantı için yoldaki ilk sonucu döndürür ve PATHEXT ortam değişkeninde bulunan her uzantıyı içermelidir.
Kevin

yah, bu benim biraz daha eski hack, buraya yapıştırdığımda hemen% PATHEXT% :) potansiyelini gördüm :)
akira

7

Lütfen where komutunu kullanın:

> where app.exe

Hedefinize ulaşmak için en iyi yoldur.

PowerShell komutunu da kullanabilirsiniz:

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

ve genişletilmiş sürüm şöyle görünür:

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

3

Bir yerde "dışarıda" Bu toplu iş dosyasını buldum whereis.bat:

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

Güncelleme: belki burada buldum .



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; 
}

Örnek:

PS> Mozilla.admx'i bulun

    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

Bugün bunu araştırıyordum ve kaynak kitinde XP olmadığından, şu komutu kullanarak powershell'e döndüm:

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

Powershell konusunda yetkin değilim ama görünen o ki, tüm dizin ağacını araştırıyorsunuz. Bu, whereyalnızca içinde arama yapanlarla aynı değildir %PATH%. Üstelik çok daha yavaş olduğunu ve klasörler için hataları verir size izin okudum yok
phuclv

Anlaştım ... Bir programın bulunabilmesi için işlevselliğin tam bir kopyasını istemedim.
KalenGi

-1

Aşağıdakileri kullanarak komutu aramayı deneyebilirsiniz:

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

Bu benim için çalışmıyor. Örneğin, exp komutu benim yolumda, ancak dir / s exp veya dir / s exp.exe sadece "Dosya Bulunamadı" veriyor.
bobmcn

4
Bu, a) sürücünün kökünden arama yaparsanız, b) yolunuzun tümü tek bir sürücüdeyse ve c) yolunuz sözlüksel düzendeyse çalışır. Bu şartlar altında bile, gülünç yavaş olacaktır.
Kevin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.