سؤال كيف يمكنني العثور على موقع ملف قابل للتنفيذ في Windows؟


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

 C:\Tmp\Where myTool.exe
 C:\Program Files\MyApp\myTools.exe
 ....

الآن لا أستطيع العثور على هذه الأداة. لست متأكدًا مما إذا كان Windows يحتوي على أداة بناء للقيام بهذا البحث؟


106
2017-09-30 17:06


الأصل


إجابات مختلفة على هل هناك ما يعادل "أي" على النوافذ؟ - Stack Overflow - Satanicpuppy
إذا كان التطبيق قيد التشغيل وكنت بحاجة إلى معرفة موقعه ، استخدم Process Explorer (من Sys Internals). - Ganesh R.
where عملت لي على ويندوز 7 المؤسسة - Bohemian
PAGING OP: الرجاء تحديث الإجابة المقبولة :) - Jake
@ David.Chu.ca الرجاء تحديث الإجابة المقبولة - Matt Frear


الأجوبة:


أعتقد أنك قد تفكر في التي الأمر في لينكس.

$ which bash
/bin/bash

لست على علم بأداة مكافئة في Windows.

تصحيح: أنا فقط تذكرت أن هناك حزمة تسمى يونيكس Utils لـ Windows التي من شأنها توفير هذه الوظيفة لك.


5
2017-09-30 17:11



github.com/bmatzelle/gow/wiki هو سليل يونكس Utils أكثر ملاءمة للاستخدام ، ودعا Gnu على ويندوز. لديها المزيد من المرافق ومثبّت. - Simon D
لا أستطيع أن أتجاوز. كان OP الصحيح وهناك "where.exe". انظر الإجابة أدناه هنا: superuser.com/a/440904/59929 - Piers Karsenbarg
إذا كنت تريد الرجوع هنا ولكن صياغة السؤال ، فيجعل ذلك إجابة صالحة: I remembered that I used a tool...Now I cannot find this tool. Not sure if Windows has [it]. - Ben


وفقا لإجابة StackOverflow في هل هناك ما يعادل "أي" على النوافذ؟، where.exe يقوم بذلك على نظامي التشغيل Windows 7 و Windows Server 2003 والإصدارات الأحدث:

مثال

C:\> where ping

انتاج:

C:\Windows\System32\PING.EXE

260
2018-06-24 11:41



يجب أن يكون هذا بمثابة الإجابة الصحيحة لأنه يعمل بدون تثبيت برامج إضافية - Cookie
جزء مهم من هذه الإجابة هو أنه في powershell ، where هو اسم مستعار افتراضي لـ Where-Object، لذلك تحتاج إلى استخدامها where.exeأو gcm/Get-Command - Dave Andersen
ماذا عن powershell. كيف يمكنني تحقيق الشيء نفسه في powershell؟ - krv


تصحيح:  كان يجب أن أضيف ، إذا لم تتمكن من استخدام الأمر WHERE من موجه الأوامر ، تحقق من المتغير PATH. (فقط استخدم الأمر "مسار".) تأكد من C: \ Windows \ System32 في المسار الخاص بك. هذا هو المكان الذي يوجد فيه "where.exe".

WHERE هو الأمر الذي تبحث عنه! WHERE يشبه التقاطع بين shell UNIX المضمّن "الذي" والأمر "تحديد موقع" ، في أنه يعمل من أجل كل من الملفات التنفيذية للأوامر والملفات العادية.

كما أنه أكثر تعقيدًا من أي من هذين ، على الرغم من أنه بسيط بشكل عام

WHERE <file>

سيعمل.

يختلف الأمر عن "تحديد موقع" في أنه لا يبحث خلال نظام الملفات بأكمله. بدلاً من ذلك ، يكون السلوك الافتراضي هو البحث عن الملفات في موقعين:

  • الدليل الحالي.
  • كافة الدلائل في المتغير PATH.

لذلك ، سيتم العثور على أي أمر يمكنك تشغيله مباشرة من موجه الأوامر بدون تحديد الدليل بواسطة الأمر WHERE. (لأن أي أمر كهذا موجود بالفعل في قائمة المتغيرات PATH.)

إذا كنت تريد البحث فقط في متغير مسار الأوامر ، يمكنك استخدام:

WHERE "$path:<search text>"

على الجانب الآخر ، إذا كنت تريد البحث عن جميع نسخ الملف في شجرة دليل ، فيمكنك استخدام:

WHERE /R <Top Level Directory> <search text>

وأخيرًا ، ستجد WHERE الأوامر وأي ملفات ذات امتداد من متغير PATHEXT بدون تضمين الامتداد. يجب تحديد جميع الملفات الأخرى إما تمامًا أو باستخدام أحرف البدل.

خذ على سبيل المثال الملفات "dxdiag.exe" و "dxdiagn.dll". لاحظ الأمر التالي وإخراجه:

WHERE /R C:\Windows dxdiag

C:\Windows\System32\dxdiag.exe
C:\Windows\SysWOW64\dxdiag.exe
C:\Windows\WinSxS\amd64_microsoft-windows-d..x-directxdiagnostic_31bf3856ad364e35_6.2.9200.16384_none_7c8d3f96e7882ec7\dxdiag.exe
C:\Windows\WinSxS\x86_microsoft-windows-d..x-directxdiagnostic_31bf3856ad364e35_6.2.9200.16384_none_206ea4132f2abd91\dxdiag.exe

ينجح في إرجاع كافة إصدارات "dxdiag.exe" لأن ".exe" أحد الملحقات في المتغير PATHEXT. (ملاحظة: "WHERE dxdiag" قد تعمل بشكل جيد ، لأن C: \ Windows \ System32 في المتغير PATH.)

WHERE /R C:\Windows dxdiagn

من ناحية أخرى ، فشل في إرجاع أي نتيجة ، لأن ".dll" ليس في PATHEXT.

في هذه الحالة ، انظر إلى النتيجة التي تضيفها لنا إضافة حرف بدل:

WHERE /R C:\Windows dxdiagn*

C:\Windows\System32\dxdiagn.dll
C:\Windows\System32\en-US\dxdiagn.dll.mui
C:\Windows\SysWOW64\dxdiagn.dll
C:\Windows\SysWOW64\en-US\dxdiagn.dll.mui
C:\Windows\WinSxS\amd64_microsoft-windows-d..iagnostic.resources_31bf3856ad364e35_6.2.9200.16384_en-us_daccd04369b09c70\dxdiagn.dll.mui
C:\Windows\WinSxS\amd64_microsoft-windows-d..x-directxdiagnostic_31bf3856ad364e35_6.2.9200.16384_none_7c8d3f96e7882ec7\dxdiagn.dll
C:\Windows\WinSxS\x86_microsoft-windows-d..iagnostic.resources_31bf3856ad364e35_6.2.9200.16384_en-us_7eae34bfb1532b3a\dxdiagn.dll.mui
C:\Windows\WinSxS\x86_microsoft-windows-d..x-directxdiagnostic_31bf3856ad364e35_6.2.9200.16384_none_206ea4132f2abd91\dxdiagn.dll

ترجع بنجاح الكل إصدارات من dxdiagn.dll.

لمزيد من المعلومات ، استخدم "WHERE /؟". أتمنى أن يساعدك هذا!


14
2017-09-27 01:23



where where  C:\Windows\System32\where.exe :) - vp_arth


استعمال dir:

cd \
dir /s /b mytool.exe

ال cd \ جزء يتغير لك إلى جذر محرك الأقراص ، لضمان بدء البحث في الجزء العلوي من التسلسل الهرمي.


8
2017-09-30 17:15



يبدو مثل القيام سطر الأوامر ويندوز البحث. - Ganesh R.
هذا يفعل بحث متكررة من محرك الأقراص ، وسوف تتخذ إلى الأبد. - djhowell
الطريقة الوحيدة للعثور على الملفات التنفيذية ذلك ARE NOT في متغير البيئة PATH هو القيام بذلك. وقال انه لم يحدد طريقه أبدا أي قابل للتنفيذ. - John T
يجد الملف التنفيذي لكنه يستغرق بعض الوقت. - Michael Z
هذا بالطبع يعمل فقط إذا كنت تعرف اسم الملف القابل للتنفيذ أو على الأقل جزء من الاسم - Oliver Williams


لاحظ أن بعض الأشياء قد تكون مختلفة قليلاً عن PowerShell:

PS C:\Users\Rob.wb-devel> where ping

PS C:\Users\Rob.wb-devel> where git

PS C:\Users\Rob.wb-devel> whereis.bat git
C:\Program Files (x86)\Git\cmd\git.exe

PS C:\Users\Rob.wb-devel> where.exe git
C:\Program Files (x86)\Git\cmd\git.exe

4
2018-04-07 12:52





محبط أنه ليس مدمجًا كقيادة بسيطة.

ومع ذلك ، هناك العديد من الحلول ، واحد منها هو ملف دفعي.

قم بإنشاء ملف دفعي (والتي. bat) كما يلي:

@setlocal
@set P2=.;%PATH%
@for %%e in (%PATHEXT%) do @for %%i in (%~n1%%e) do @if NOT "%%~$P2:i"=="" echo %%~$P2:i 

هذا يبحث في الدليل المحلي ، سيأخذ معلمة اسم الملف مع أو بدون ملحق ، وإرجاع المطابقة الأولى من الدليل الحالي أو في PATH.

ثم تشغيلها مثل which cmd.exe للبحث عن cmd.exe التي سيتم تنفيذها في حالة الكتابة cmd.


3
2017-09-30 18:23





على النوافذ ، يمكنك استخدام الأداة المجانية كل شيء محرك البحث للبحث فورا لأي ملف بالاسم الكامل أو الجزئي (إذا تم تنسيق القرص الثابت في ntfs).


3
2017-09-30 19:26



الفرق بين الليل والنهار بين هذا والبحث عن النوافذ. - AnthonyVO


إذا كنت تريد فقط التي، ال GnuWin32 المشروع لديه مجموعة من unix utils مع المثبتات الفردية.


1
2017-09-30 17:19





في PowerShell

(@($env:path.split(";")) + (pwd).Path)  | where { dir $_ -ErrorAction SilentlyContinue |? Name -eq foo.exe }

يمكنك بسهولة تحويل هذا إلى Cmdlet.


1
2017-09-21 17:59