มีคำสั่งUnix whereisใน Windows เทียบเท่าหรือไม่?
เพื่อที่ฉันจะได้รู้ว่าคำสั่งที่ฉันสามารถรันได้จริงนั้นอยู่ที่ไหน
มีคำสั่งUnix whereisใน Windows เทียบเท่าหรือไม่?
เพื่อที่ฉันจะได้รู้ว่าคำสั่งที่ฉันสามารถรันได้จริงนั้นอยู่ที่ไหน
คำตอบ:
ที่คำสั่งไม่สิ่งที่คุณต้องการและกลับไปอย่างน้อยถึงชุดทรัพยากรสำหรับ 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) ผลลัพธ์จะเป็นหนึ่งในข้อความโปรดของฉัน:
C:\>where
ERROR: The operation completed successfully.
หากดำเนินการใน PowerShell ให้แน่ใจว่าได้รวม '.exe' เพื่อแยกความแตกต่างจาก 'ที่' ชื่อแทนหรือสคริปต์ตามเส้นทาง ('where' เป็นนามแฝงทั่วไปสำหรับ Where-Object.ps1)
C:\> where.exe where.exe
C:\Windows\System32\where.exe
where
เพิ่งส่งคืนความช่วยเหลือการใช้งานใน Windows 7 ต้องการดูด้วยตัวเอง: p
where
ไม่พร้อมใช้งานใน XP
แฮ็กเกอร์ตัวไหน 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)
)
กรุณาใช้คำสั่งwhere :
> where app.exe
มันเป็นวิธีที่ดีที่สุดในการบรรลุเป้าหมายของคุณ
คุณยังสามารถใช้คำสั่ง PowerShell:
> $env:path.Split(';') | gci -Filter app.exe
และเวอร์ชันขยายจะมีลักษณะดังนี้:
> $env:path.Split(';') | select -Unique | ? {$_ -and (test-path $_)} | gci -Filter app.exe
ที่ไหนสักแห่ง "ออกมี" ฉันพบไฟล์ชุดนี้whereis.bat
:
@for %%e in (%PATHEXT%) do @for %%i in (%1%%e) do @if NOT "%%~$PATH:i"=="" echo %%~$PATH:i
อย่างน้อยมีพอร์ต Windowsสำหรับ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;
}
ตัวอย่าง:
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
ฉันกำลังค้นหาสิ่งนี้ในวันนี้และเนื่องจากฉันใช้ XP โดยไม่มีชุดทรัพยากรฉันจึงหันไปใช้ PowerShell ด้วยคำสั่งต่อไปนี้:
dir -path c:\ -filter ffmpeg.* -r
where
%PATH%
ยิ่งไปกว่านั้นมันช้ากว่ามากและให้ข้อผิดพลาดสำหรับโฟลเดอร์ที่คุณไม่ได้รับอนุญาตให้อ่าน
คุณสามารถลองค้นหาคำสั่งโดยใช้คำสั่งต่อไปนี้:
dir /s type-whatever-you-are-searching