2009-04-18 6 views
5

पर एक निश्चित फ़ाइल पाई जा सकती है, मैं एक ऐसा फ़ंक्शन बनाने की कोशिश कर रहा हूं जो मुझे सभी पथ दिखाएगा जहां एक निश्चित फ़ाइल नाम स्थित है। फ़ंक्शन एक पैरामीटर लेगा, जो फ़ाइल का नाम है। परिणाम या तो सभी पथों की एक सूची होगी, या एक संदेश होगा कि सिस्टम पर ऐसी कोई फ़ाइल नहीं है।सभी पथों को प्रदर्शित करने के लिए पावरहेल प्राप्त करें जहां

मैं पावरहेल के लिए नया हूं, और मुझे अभी तक वाक्यविन्यास नहीं मिल रहा है। मैं इस की कोशिश की है:

Get-ChildItem -Path -Include notepad.exe 

लेकिन उस समय एक त्रुटि संदेश फेंक दिया। मैं वर्तमान में कोशिश कर रहा हूं:

$i="notepad.exe" 

Foreach ($i in Get-ChildItem c:\ -Recurse){echo -Path} 

अभी शुरू हुआ, यह अभी भी चल रहा है, पता नहीं क्या वास्तव में होगा।

संपादित करें: लाइनों का एक विशाल राशि है कि बस कहते हैं कि "-Path" ...

किसी को भी इस समस्या के साथ मदद कर सकते हैं echo'd? मैं रास्ते में पावरहेल 1.0 चला रहा हूँ।

C:/foo.txt
C:/A/foobar.txt
C:/A1/foo.txt

और इसी तरह सभी के लिए पथ लिस्टिंग,:

तो, मैं जब इस आदेश को क्रियान्वित करने देखना चाहते हैं समझाने के लिए, यहाँ मैं * .txt की तलाश के बाद क्या उम्मीद का एक उदाहरण है। मेरे हार्डड्राइव पर txt फ़ाइलें। केवल पथ, प्रति पंक्ति एक, कोई अतिरिक्त जानकारी की आवश्यकता नहीं है।

EDIT2:

मैंने इसे किया है। मैं इस सवाल को उन लोगों के लिए छोड़ दूंगा जो भविष्य में इसकी तलाश करते हैं।

समारोह मैं इस्तेमाल किया गया था इस (इस विशिष्ट उदाहरण आपकी हार्डड्राइव, संपादित करें जहां जरूरत पर आप सभी ज़िप फ़ाइलों की एक सूची सौंप देंगे):

Get-ChildItem -Path c:\ -Include "*.zip" -Recurse -Force -Name > c:\listOfPaths.txt 

यह एक फ़ाइल listOfPaths.txt बुलाया बनाया पर मेरे सी: \ फ़ोल्डर और इसमें मेरे हार्डड्राइव के सभी सबफ़ोल्डर में .zip के साथ समाप्त होने वाली किसी भी फ़ाइल के सभी अवसरों की एक सूची शामिल है।

"सी: \" बिट का उल्लेख नहीं किया गया है, लेकिन मुझे कोई फर्क नहीं पड़ता।

EDIT3: एक और अधिक पूर्ण संस्करण के लिए

धन्यवाद capar।

यहाँ capar के कोड है (या यह काम मैं कैसे मिल गया है, क्योंकि प्राप्त करें-बच्चे 1.0 में काम नहीं करता)

Get-ChildItem -Path c:\ -Recurse *.txt | Select-Object -Property FullName 
+2

+1 आप 0 करने के लिए वापस लाने के लिए, मैं कुछ भी एक downvote के योग्य नहीं दिख रहा है –

+0

धन्यवाद capar, अभी भी इस आदेश का पता लगाने की कोशिश।। – KdgDev

+1

किसी ने इस पोस्ट को बलात्कार क्यों किया और इसे कम किया? 'Dir * .zip/s> foo.txt' इसके बारे में कुछ करेगा। – ojblass

उत्तर

9

शुक्रवार की रात के बाद से, मैंने यह देखने के लिए पावर शैल के साथ खेलने का फैसला किया कि मैं मदद कर सकता हूं :) यह आपके विचार के लिए बहुत करीब आता है :

Get-ChildItem -Path c:\ -Recurse *.txt | Select-Object -Property FullName 

यदि यह मदद करता है, इस आदेश को किसी भी वस्तु है कि प्राप्त करें-ChildItem द्वारा लौटा दी जाएगी के गुणों को सूचीबद्ध करेगा:

Get-ChildItem | Get-Member 
+1

पावरहेल ई rror: Get-Children एक मान्यता प्राप्त cmdlet नहीं है, फ़ंक्शन ... क्या आप किसी भी मौके से पावरहेल 2.0 चला रहे हैं? – KdgDev

+2

प्रयुक्त गेट-चाइल्ड इटैम और यह एक आकर्षण की तरह काम करता था। Awsome, मदद – KdgDev

+1

मदद के लिए धन्यवाद। खुशी है कि यह काम किया। –

1

ls c: \ -r | ? {$ _। name -eq "notepad.exe"}

+0

हल हो गया है, अगर आपको पसंद है तो उत्तर की जांच करें। – KdgDev

1

हो जाओ-बच्चे या तो Powershell वी 3 में मान्यता प्राप्त नहीं है।अगर कोई उस बुरे उदाहरण को हटा देता है तो यह बहुत अच्छा होगा।

फाइलों की खोज करने वालों को चेतावनी के रूप में: सी: \ आज की हार्ड ड्राइव पर चलाने में काफी समय लगेगा। आपको अच्छी तरह से सलाह दी जाती है कि आप जितनी चाहें उतनी खोज को सीमित कर सकें। चूंकि आपकी फ़ोल्डर संरचना में रिक्त स्थान या विशेष वर्ण शामिल हो सकते हैं, टाइपराइटर उद्धरण (") या एस्ट्रोफ़े (') डिलीमीटर का उपयोग करें।

$ mylistoffiles = Get-ChildItem -Path' C: \ Windows \ Setup \ स्क्रिप्ट '-Recurse * .cmd | का चयन करें-वस्तु -Property FullName

$ mylistoffiles

संबंधित मुद्दे

 संबंधित मुद्दे