मुझे विंडोज में एक निष्पादन योग्य का स्थान कैसे मिल सकता है?


152

मुझे याद आया कि मैंने whereकंसोल में इस तरह के किसी भी निष्पादन योग्य कार्यक्रमों के लिए स्थान खोजने के लिए एक उपकरण का उपयोग किया था :

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

अब मुझे यह टूल नहीं मिल रहा है। निश्चित नहीं है कि विंडोज में सर्च करने के लिए बिल्ड-इन टूल है या नहीं?



यदि एप्लिकेशन चल रहा है और आपको उसका स्थान जानना है, तो प्रोसेस एक्सप्लोरर (Sys Internals से) का उपयोग करें।
गणेश आर।

6
whereमेरे लिए विंडोज 7 एंटरप्राइज
बोहेमियन

4
पेजिंग ओपी: कृपया स्वीकृत उत्तर को अपडेट करें :)
जेक

1
@ David.Chu.ca कृपया स्वीकृत उत्तर अपडेट करें
मैट फ्रियर

जवाबों:


3

मुझे लगता है कि आप लिनक्स में किस कमांड के बारे में सोच रहे होंगे ।

$ which bash
/bin/bash

मुझे विंडोज में एक बराबर टूल के बारे में पता नहीं है।

संपादित करें: मुझे बस याद है कि विंडोज के लिए यूनिक्स यूटिल्स नामक एक पैकेज है जो आपके लिए यह कार्यक्षमता प्रदान करेगा।


github.com/bmatzelle/gow/wiki यूनिक्स यूटिल्स का वंशज है जो उपयोग करने के लिए अधिक सुविधाजनक है, जिसे विंडोज पर ग्नू कहा जाता है। इसमें अधिक उपयोगिताओं और एक इंस्टॉलर है।
साइमन डी।

33
डेमिट मैं डाउनवोट नहीं हो सकता। ओपी सही था और वहाँ एक "where.exe" है। नीचे दिए गए उत्तर को यहाँ देखें: superuser.com/a/440904/59929
Piers Karsenbarg

1
यहाँ downvote चाहता था, लेकिन सवाल के शब्द यह एक वैध जवाब बनाता है: I remembered that I used a tool...Now I cannot find this tool. Not sure if Windows has [it]
बेन

351

StackOverflow के उत्तर के अनुसार क्या खिड़कियों पर 'जो' के बराबर है? , where.exeयह विंडोज 7 और विंडोज सर्वर 2003 और बाद में करता है:

उदाहरण

C:\> where ping

आउटपुट:

C:\Windows\System32\PING.EXE

19
यह सही उत्तर के रूप में बनाया जाना चाहिए क्योंकि यह अतिरिक्त सॉफ्टवेयर स्थापित किए बिना काम करता है
कुकी

24
इस जवाब का एक महत्वपूर्ण हिस्सा है कि PowerShell में, है whereके लिए एक डिफ़ॉल्ट अन्य नाम है Where-Object, तो आप के बजाय का उपयोग करने की आवश्यकता है where.exe, या gcm/Get-Command
डेव एंडरसन

2
शक्तियों के बारे में क्या। मैं शक्तियां कैसे प्राप्त कर सकता हूं?
क्रि।

1
@krv जैसा कि @DaveAndersen ने उल्लेख किया है, शक्तियों में आप टाइप कर सकते हैं Get-Command ping(या सिर्फ gcm ping), जो आपको कुछ अन्य जानकारी के साथ, पूरा रास्ता देगा।
सैम

22

संपादित करें: मुझे जोड़ा जाना चाहिए, यदि आप कमांड प्रॉम्प्ट से WHERE कमांड का उपयोग नहीं कर सकते हैं, तो अपने पैट वैरिएबल की जांच करें। (बस "पथ" कमांड का उपयोग करें।) सुनिश्चित करें कि C: \ Windows \ System32 आपके पथ में है। वह "where.exe" स्थित है।

आप के लिए देख रहे हैं, जहां आदेश है! WHIX UNIX शेल के बीच एक क्रॉस की तरह है, जो "इन" और "डिटेक्ट" कमांड है, जिसमें यह कमांड एक्जीक्यूटेबल और रेगुलर फाइल दोनों के लिए काम करता है।

यह उन दोनों में से कुछ से भी अधिक जटिल है, हालांकि, सामान्य रूप से एक सरल

WHERE <file>

काम करेगा।

यह "पता" कमांड से अलग है जिसमें यह पूरे फाइल सिस्टम के माध्यम से नहीं दिख रहा है। इसके बजाय, डिफ़ॉल्ट व्यवहार दो स्थानों की फ़ाइलों को देखने के लिए है:

  • वर्तमान निर्देशिका।
  • PATH चर में निर्देशिका के सभी।

इसलिए, निर्देशिका को निर्दिष्ट किए बिना आप कमांड प्रॉम्प्ट से सीधे चला सकते हैं, कोई भी आदेश WHERE कमांड द्वारा मिलेगा। (क्योंकि उस तरह की कोई भी कमांड पहले से ही PATH वैरिएबल लिस्ट में है।)

यदि आप केवल कमांड पथ चर में खोज करना चाहते हैं , तो आप इसका उपयोग कर सकते हैं:

WHERE "$path:<search text>"

यदि, दूसरी ओर, आप किसी निर्देशिका ट्री में किसी फ़ाइल की सभी प्रतियां ढूंढना चाहते हैं, तो आप इसका उपयोग कर सकते हैं:

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

अंत में, बिना एक्सटेंशन को शामिल किए 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 पैट्री चर में है।)

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 /?" का उपयोग करें। उम्मीद है की यह मदद करेगा!


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

1
@vp_arth बस एक ही बात सोच रहे थे :)
इंजीनियर

10

उपयोग dir:

cd \
dir /s /b mytool.exe

cd \भाग ड्राइव की जड़ तक आप बदल जाता है, पदानुक्रम के शीर्ष पर खोज शुरू होता है सुनिश्चित करने के लिए।


ऐसा लगता है कि कमांड लाइन विंडोज सर्च कर रहा है।
गणेश आर।

5
यह ड्राइव की पुनरावर्ती खोज करता है और हमेशा के लिए ले जाएगा।
djhowell

6
निष्‍कर्षों को खोजने का एकमात्र तरीका पाथ पर्यावरण चर में AREN'T है। उन्होंने अपना रास्ता कभी नहीं बताया, उन्होंने कहा कि कोई भी निष्पादन योग्य है
जॉन टी

यह निष्पादन योग्य लगता है, लेकिन इसमें कुछ समय लगता है।
माइकल जेड

यह निश्चित रूप से केवल तभी काम करता है जब आप निष्पादन योग्य या कम से कम नाम के एक हिस्से को जानते हैं
ओलिवर विलियम्स

8

ध्यान दें कि कुछ चीज़ें 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

धन्यवाद, यह दोनों cmd ​​और पॉवरशेल के लिए काम करता है
डिंग-यी चेन

3

निराशा है कि यह एक साधारण आदेश के रूप में निर्मित नहीं है।

हालांकि, कई समाधान हैं, जिनमें से एक बैच फ़ाइल है

एक बैच फ़ाइल बनाएँ (जो कि इस प्रकार है):

@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.execmd.exe को खोजने के लिए चलाएं जो यदि आप टाइप करते हैं तो निष्पादित होगा cmd


3

खिड़कियों पर आप मुफ्त या पूर्ण नाम से किसी भी फ़ाइल के लिए तुरंत खोज करने के लिए सब कुछ खोज इंजन का उपयोग कर सकते हैं ।


1
इस और खिड़कियों की खोज में रात और दिन का अंतर।
एंथोनीवो


1

पॉवरशेल में

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

आप इसे आसानी से Cmdlet में बदल सकते हैं।

इसे पूरा करने का दूसरा तरीका, जैसा कि एक संपादन में सुझाया गया है:

get-command notepad.exe | select Source

0

यदि आपको इसे लॉन्च करने के लिए पथ की आवश्यकता है, तो अक्सर स्टार्ट कमांड का उपयोग करना बेहतर होता है। उदाहरण के लिए, आप क्रोम {e | ium} को शुरू करने के लिए "chrome.exe प्रारंभ करें" का उपयोग कर सकते हैं, भले ही यह कहाँ स्थापित हो।


0

हे, मैं सिर्फ इस विंडोज एक लाइनर बैच फ़ाइल पोस्ट करने के लिए है:

C:>type wh.cmd
@for %%f in (%*) do for %%e in (%PATHEXT% .dll .lnk) do for %%b in (%%f%%e) do for %%d in (%PATH%) do if exist %%d\%%b echo %%d\%%b

एक परीक्षा:

C:>wh ssh
C:\cygwin64\bin\ssh.EXE
C:\Windows\System32\OpenSSH\\ssh.EXE

यदि आप कोड को लपेटते हैं तो काफी एक-लाइनर नहीं है , setlocal enableextensionsऔर endlocalउन उपयोगकर्ताओं के लिए आवश्यक हैं जिनके पास डिफ़ॉल्ट रूप से सक्षम एक्सटेंशन नहीं हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.