Windows เทียบเท่ากับที่ไหน?


164

มีคำสั่งUnix whereisใน Windows เทียบเท่าหรือไม่?

เพื่อที่ฉันจะได้รู้ว่าคำสั่งที่ฉันสามารถรันได้จริงนั้นอยู่ที่ไหน

คำตอบ:


203

ที่คำสั่งไม่สิ่งที่คุณต้องการและกลับไปอย่างน้อยถึงชุดทรัพยากรสำหรับ 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

4
ทุกวันฉันได้เรียนรู้สิ่งใหม่ ...
รูเบนส์ Mariuzzo

4
ชนิดของความเศร้าwhereเพิ่งส่งคืนความช่วยเหลือการใช้งานใน Windows 7 ต้องการดูด้วยตัวเอง: p
Svish

2
whereไม่พร้อมใช้งานใน XP
Tom Roggero

1
@ Tomogogo ฉันน่าจะชัดเจนกว่านี้ เป็นส่วนหนึ่งของชุดทรัพยากรเพิ่มเติมที่เริ่มต้นด้วย Windows 98 และรวมอยู่ในการติดตั้งพื้นฐานสำหรับรุ่นหลังจาก XP เท่านั้น
เควิน

7

แฮ็กเกอร์ตัวไหน 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
นี่เป็นการแก้ไขที่ดีสำหรับระบบเก่า แต่คุณควรรู้ว่ามันส่งผลให้มีนิสัยแปลก ๆ มันตรงกับไดเรกทอรีเพียงส่งกลับผลลัพธ์แรกที่พบในเส้นทางสำหรับแต่ละส่วนขยายและควรรวมทุกนามสกุลที่พบในตัวแปรสภาพแวดล้อม PATHEXT
เควิน

ย่ะนี้เป็นสับของฉันบิตเก่าเมื่อฉันวางมันนี่ฉันทันทีเห็นศักยภาพสำหรับ% PATHEXT% :)
akira

7

กรุณาใช้คำสั่งwhere :

> where app.exe

มันเป็นวิธีที่ดีที่สุดในการบรรลุเป้าหมายของคุณ

คุณยังสามารถใช้คำสั่ง PowerShell:

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

และเวอร์ชันขยายจะมีลักษณะดังนี้:

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

3

ที่ไหนสักแห่ง "ออกมี" ฉันพบไฟล์ชุดนี้whereis.bat:

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

ปรับปรุง: บางทีผมพบว่ามันนี่



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

ตัวอย่าง:

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        

0

ฉันกำลังค้นหาสิ่งนี้ในวันนี้และเนื่องจากฉันใช้ XP โดยไม่มีชุดทรัพยากรฉันจึงหันไปใช้ PowerShell ด้วยคำสั่งต่อไปนี้:

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

ฉันไม่เชี่ยวชาญใน powerhell แต่ดูเหมือนว่าคุณกำลังค้นหาในแผนผังไดเรกทอรีทั้งหมด นี้จะไม่เทียบเท่ากับที่การค้นหาเฉพาะในwhere %PATH%ยิ่งไปกว่านั้นมันช้ากว่ามากและให้ข้อผิดพลาดสำหรับโฟลเดอร์ที่คุณไม่ได้รับอนุญาตให้อ่าน
phuclv

ตกลง ... ฉันไม่ต้องการสำเนาฟังก์ชั่นที่แน่นอนเพียงความสามารถในการค้นหาโปรแกรม
KalenGi

-1

คุณสามารถลองค้นหาคำสั่งโดยใช้คำสั่งต่อไปนี้:

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

สิ่งนี้ไม่ได้ผลสำหรับฉัน ตัวอย่างเช่นคำสั่ง exp อยู่ในเส้นทางของฉัน แต่ dir / s exp หรือ dir / s exp.exe จะให้ "File Not Found"
bobmcn

4
สิ่งนี้จะได้ผลถ้าก) คุณค้นหาจากรากของไดรฟ์ข) เส้นทางของคุณทั้งหมดในไดรฟ์เดียวและ c) เส้นทางของคุณอยู่ในลำดับพจนานุกรม แม้ภายใต้เงื่อนไขเหล่านี้มันจะช้าขันอย่างน่าขัน
เควิน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.