Cmd के "कहाँ" में समतुल्य है


61

मैं whereकमांड के Powershell कमांड के बराबर के बारे में कुछ भी नहीं जान सकता cmd। क्या मुझे इसे बस से कॉल करना चाहिए cmdया पीएस में कुछ और सुरुचिपूर्ण है?


दिलचस्प पढ़ने मैं कुछ समय Where.exe पर वापस मिल गया और Get-ChildItem: blogs.technet.com/b/heyscriptingguy/archive/2010/07/24/...
शॉन मेल्टन

जवाबों:


59

Get-Commandकमांडलेट का उपयोग करें इसे निष्पादन योग्य का नाम दें। यह निष्पादन योग्य के लिए पूरी तरह से हल किए गए पथ के साथ लौटे ऑब्जेक्ट (प्रकार ApplicationInfo ) की पथ संपत्ति को पॉप्युलेट करता है ।

# ~> (get-command notepad.exe).Path
C:\WINDOWS\system32\notepad.exe

8
यदि आप अपने आप को इसका उपयोग करते हुए पाते हैं, तो आप हर बार gcmपूरे Get-Commandशब्द टाइप करने के बजाय कमांड को संक्षिप्त कर सकते हैं
मोशे काट्ज़

@MosheKatz धन्यवाद! gcm notepadमेरे लिए एकदम सही काम कर रहा है जब मैं सिर्फ यह देखना चाहता हूं कि मैं कौन सी फाइल बुला रहा हूं।
शॉन वैंग

1
और यह, लड़कों और लड़कियों, यह है कि आप कैसे उपयोगी चीजों को अधिक जटिल करते हैं जो पहले से ही सही थे। अगर यह टूटा नहीं है, तो इसे ठीक न करें।
AFP_555

इस कमांड के लिए आपका बहुत-बहुत धन्यवाद। मैं पथ को हार्डकोड किए बिना एड-टाइप कर सकता हूं।
जेसन TEPOORTEN

22

यदि आप सीएमडी को लागू किए बिना बस एक ही कार्यक्षमता देख रहे हैं, तो आप इसे तब तक कॉल कर सकते हैं where.exe, जब तक कि C:\Windows\System32यह आपके रास्ते में न हो। कमांड where(.exe के बिना) को अलियास किया गया है Where-Object, इसलिए केवल पूरा नाम निर्दिष्ट करें।

PS C:\Users\alec> where
cmdlet Where-Object at command pipeline position 1
...

PS C:\Users\alec> where.exe
The syntax of this command is:

WHERE [/R dir] [/Q] [/F] [/T] pattern...

8

Get-ChildItem C:\SomeDir -Recurse *.dll

यह बहुत ज्यादा है कि पुराना कहाँ है। exe ... क्या अधिक विशिष्ट कार्यक्षमता थी जो आप नकल करने की कोशिश कर रहे हैं?

संपादित करें: यहोशू की टिप्पणी के जवाब में ... ओह, आप अपने पाथ पर्यावरण चर भी खोजना चाहते हैं? कोई दिक्कत नहीं है।

Foreach($_ In $Env:Path -Split ';')
{
    Get-ChildItem $_ -Recurse *.dll
}

1
"जहां" भी PATH के साथ
यहोशू मैककिनोन

3
oh, you want to search your PATH environment variables too? उम, हाँ, यह पूरी बात है where, अन्यथा आप बस उपयोग कर सकते हैं dir। डेर। :-P
Synetech

3

whereएक अंतर्निहित cmdकमांड नहीं है। यह एक स्वसंपूर्ण अनुप्रयोग है ( where.exe), इसलिए सख्ती से बोलने वाले PowerShell को "प्रतिस्थापन की आवश्यकता नहीं है"।

तो क्यों wherePowerShell में काम नहीं करता है ? यह कुछ भी नहीं करने के लिए लगता है:

PS C:\> where where
PS C:\>

डिफ़ॉल्ट रूप whereसे एक अंतर्निहित पीएस cmdlet में अलियास किया जाता है।

PS C:\> get-help where

NAME
    Where-Object
...
ALIASES
    where
    ?

खैर, यह जानना बहुत अच्छा है, लेकिन क्या where-objectकॉल करने की कोशिश करने पर कॉल से बचने का कोई तरीका है where.exe?

इसका जवाब है हाँ।

विकल्प 1

where.exeविस्तार के साथ बुलाओ । (यह अन्य एलियासिंग और फ़ाइल-एक्सटेंशन प्राथमिकता मुद्दों के आसपास काम करने का एक आसान तरीका है।)

PS C:\> where.exe where
C:\Windows\System32\where.exe

विकल्प 2

उर्फ को हटा दें।

PS C:\> Remove-Item alias:\where -Force
PS C:\> where where
C:\Windows\System32\where.exe

साइड नोट्स

zdan का उत्तरGet-Command विकल्प के रूप में उपयोग करने का प्रस्ताव करता है। यद्यपि यह थोड़ी अधिक gcmक्रिया है (डिफ़ॉल्ट उपनाम का उपयोग करते समय भी ), इसकी तुलना में अधिक समृद्ध कार्यक्षमता है where.exe। यदि स्क्रिप्टिंग में उपयोग किया जाता है, तो दोनों के बीच सूक्ष्म अंतर पर ध्यान दें। जब तक आप वैकल्पिक पैरामीटर को शामिल नहीं करते हैं where.exe, उदाहरण के लिए , सभी मैच लौटाता है, जबकि Get-Commandकेवल पहला परिणाम देता है -TotalCount

PS C:\> where.exe notepad
C:\Windows\System32\notepad.exe
C:\Windows\notepad.exe
PS C:\> (gcm notepad).Path
C:\WINDOWS\system32\notepad.exe
PS C:\> (gcm notepad -TotalCount 5).Path
C:\WINDOWS\system32\notepad.exe
C:\WINDOWS\notepad.exe
PS C:\>

और अंत में, यदि आप डिफ़ॉल्ट whereउपनाम को हटा देते हैं, तो आप इसे पुन: असाइन करने पर भी विचार कर सकते हैं जो कि एक अन्य नाम है Get-Command। (लेकिन यह शायद संदिग्ध लाभ होगा।)

PS C:\> Set-Alias where Get-Command
PS C:\> where notepad

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Application     notepad.exe                                        10.0.15... C:\WINDOWS\system32\notepad.exe


PS C:\> (where notepad).Path
C:\WINDOWS\system32\notepad.exe
PS C:\>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.