Apakah ada yang setara dengan perintah Unix whereis di Windows?
Sehingga saya bisa mencari tahu di mana perintah saya bisa menjalankan sebenarnya.
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
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
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)
)
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 .
Setidaknya ada port Windows untuk utilitas which
.
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
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
Pendekatan (GUI) yang berbeda, tetapi lihat Semuanya .