سؤال مكافئ ويندوز من اينيس؟


هل هناك ما يعادل يونيكس أين هو الأمر في ويندوز؟

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


151
2017-08-11 10:50


الأصل




الأجوبة:


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

181
2017-09-10 23:00



كل يوم أتعلم شيئًا جديدًا ... - Rubens Mariuzzo
نوع من الحزن where فقط بإرجاع مساعدة الاستخدام الآن في Windows 7. أردت أن أرى ذلك لنفسي: ص - Svish
where غير متوفرة في XP - Tom Roggero
TomRoggero ، كان بإمكاني أن أكون أكثر وضوحًا. إنه جزء من مجموعة الموارد الاختيارية التي تبدأ بـ Windows 98 ، ويتم تضمينها فقط في التثبيت الأساسي للإصدار بعد XP. - Kevin


hackerish التي. cdd:

@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) 
)

6
2017-09-10 21:08



هذا هو حل جيد للأنظمة القديمة ، ولكن يجب أن تعرف أنه يؤدي إلى بعض المراوغات. فإنه يطابق الدلائل ، فقط إرجاع النتيجة الأولى الموجودة في المسار لكل ملحق ، ويجب أن يتضمن كل ملحق موجود في متغير بيئة PATHEXT. - Kevin
نعم ، هذا هو الإختراق الأقدم قليلا من الألغام ، عندما قمت بلصقه هنا رأيت على الفور إمكانية لـ٪ PATHEXT٪ :) - akira


يرجى استخدام أين أمر:

> where app.exe

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

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

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

والنسخة الموسعة تشبه هذا:

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

6
2017-08-04 21:39



هذا هو أفضل إجابة - skan


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

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

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


2
2017-11-09 05:00





هناك على الأقل منفذ ويندوز ل which خدمة.


1
2017-08-11 10:53





نهج مختلف (GUI) ، ولكن انظر كل شىء.


0
2017-11-09 06:52



هذا شيء مختلف. لا يساعدك بالتأكيد على الإجابة عن السؤال "ما يتم تنفيذه بالضبط ، عند تنفيذ <command> في الدليل الحالي"وهذا ما تطلبه OP. - Dawid Ferenczy


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

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

0
2017-07-14 15:46



أنا لست بارعا في powershell ولكن يبدو أنك تبحث من خلال شجرة الدليل كله. هذا لا يعادل where الذي يبحث فقط في %PATH%. وعلاوة على ذلك أبطأ بكثير ويعطي أخطاء للمجلدات ليس لديك إذن القراءة - phuclv
متفق عليه ... لم أطلب نسخة طبق الأصل من الوظيفة ، فقط القدرة على تحديد موقع البرنامج. - KalenGi


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        

0
2017-10-05 14:19





يمكنك محاولة البحث عن الأمر باستخدام ما يلي:

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

-1
2017-08-11 13:04



هذا لا يعمل بالنسبة لي. على سبيل المثال ، الأمر exp في المسار الخاص بي ، ولكن exp / s exp أو dir / s exp.exe يعطي فقط "ملف غير موجود". - bobmcn
هذا من شأنه أن يعمل إذا أ) البحث من جذر محرك الأقراص ، ب) المسار الخاص بك هو كل على محرك أقراص واحد ، ج) المسار الخاص بك هو في lexicographical النظام. حتى في ظل هذه الظروف ، سيكون الأمر بطيئًا للغاية. - Kevin