هل هناك ما يعادل أمر 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 app.exe
إنها أفضل طريقة لتحقيق هدفك.
يمكنك أيضًا استخدام أمر PowerShell:
> $env:path.Split(';') | gci -Filter app.exe
والإصدار الموسع يشبه هذا:
> $env:path.Split(';') | select -Unique | ? {$_ -and (test-path $_)} | gci -Filter app.exe
المتسللين 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)
)
في مكان ما "هناك" ، وجدت هذا الملف الدفعي 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> حيث firefox.exe
Directory: C:\Program Files\Mozilla Firefox
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 9/21/2017 5:30 PM 477136 firefox.exe
كنت أبحث عن هذا اليوم ولأنني أستخدم XP بدون أدوات الموارد ، التفتت إلى powerhell باستخدام الأمر التالي:
dir -path c:\ -filter ffmpeg.* -r
طريقة (GUI) مختلفة ، لكن انظر إلى كل شيء .