it-swarm.asia

ويندوز يعادل أين؟

هل هناك ما يعادل أمر Unix whereis في نظام التشغيل Windows؟

حتى أتمكن من معرفة أين هي الأوامر التي يمكنني تشغيلها بالفعل.

160
Svish

يقوم الأمر حيث يقوم الأمر بما تريد ويعود على الأقل إلى مجموعة الموارد لنظام التشغيل 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
197
Kevin

الرجاء استخدام حيث الأمر:

> where app.exe

إنها أفضل طريقة لتحقيق هدفك.

يمكنك أيضًا استخدام أمر PowerShell:

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

والإصدار الموسع يشبه هذا:

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

المتسللين which.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

في مكان ما "هناك" ، وجدت هذا الملف الدفعي whereis.bat:

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

تحديث: ربما وجدت ذلك هنا .

3
Craig McQueen

يوجد على الأقل منفذ Windows للأداة المساعدة 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; 
}

مثال:

PS> العثور على Mozilla.admx

    Directory: C:\Windows\PolicyDefinitions                                                                                     

Mode                LastWriteTime         Length Name                                                                           
----                -------------         ------ ----                                                                           
-a----        1/27/2016  12:22 PM          37146 Mozilla.admx                                                                   

PS> حيث firefox.exe

    Directory: C:\Program Files\Mozilla Firefox                                                                                 

Mode                LastWriteTime         Length Name                                                                           
----                -------------         ------ ----                                                                           
-a----        9/21/2017   5:30 PM         477136 firefox.exe        
1
Rupert

كنت أبحث عن هذا اليوم ولأنني أستخدم XP بدون أدوات الموارد ، التفتت إلى powerhell باستخدام الأمر التالي:

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

طريقة (GUI) مختلفة ، لكن انظر إلى كل شيء .

0
name