it-swarm.asia

Setara dengan Windows di mana?

Apakah ada yang setara dengan perintah Unix whereis di Windows?

Sehingga saya bisa mencari tahu di mana perintah saya bisa menjalankan sebenarnya.

160
Svish

Perintah di mana melakukan apa yang Anda inginkan dan kembali setidaknya ke kit sumber daya untuk Windows 98, dan disertakan secara default di Server 2003, Vista, dan lebih baru:

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

Jika dijalankan tanpa argumen (pada Vista), itu menghasilkan salah satu pesan favorit saya:

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

Jika dijalankan di PowerShell, pastikan untuk menyertakan '.exe' untuk membedakan dari alias atau skrip 'mana' di sepanjang jalur. ('where' adalah alias khas untuk Where-Object.ps1)

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

Silakan, gunakan di mana perintah:

> where app.exe

Ini adalah cara terbaik untuk mencapai tujuan Anda.

Anda juga dapat menggunakan perintah PowerShell:

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

dan versi yang diperluas terlihat seperti ini:

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

peretas yang.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) 
)
7
akira

Di suatu tempat "di luar sana" Saya menemukan file batch ini whereis.bat:

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

Pembaruan: mungkin saya menemukannya di sini .

3
Craig McQueen

Setidaknya ada port Windows untuk utilitas which.

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

Contoh:

PS> temukan 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        
1
Rupert

Saya mencari ini hari ini dan karena saya menggunakan XP tanpa kit sumber daya, saya beralih ke PowerShell dengan perintah berikut:

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

Pendekatan (GUI) yang berbeda, tetapi lihat Semuanya .

0
name