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.