2012-10-29 14 views
83

में फ़ाइलों का पूरा पथ प्राप्त करें मुझे किसी विशेष प्रकार से संबंधित उपफोल्डर्स में मौजूद फ़ाइलों सहित सभी फ़ाइलों को प्राप्त करने की आवश्यकता है।PowerShell

मैं कुछ इस तरह कर रहा हूँ, Get-ChildItem का उपयोग कर:

Get-ChildItem "C:\windows\System32" -Recurse | where {$_.extension -eq ".txt"} 

हालांकि, यह सिर्फ मेरे फ़ाइलों के नाम और नहीं पूरे पथ लौटा रहा है।

उत्तर

135

ऊपर अपनी लाइन के अंत में | select FullName जोड़ें। आप वास्तव में बाद में उस के साथ कुछ करने की जरूरत है, तो आप एक foreach पाश में पाइप करना पड़ सकता है, इसलिए जैसे:

Get-ChildItem C:\WINDOWS\System32 -Filter *.txt -Recurse | % { $_.FullName } 
60

यह देर से छानने का उपयोग करने से बहुत तेजी से प्रदर्शन करना चाहिए एक छोटी एक:

(Get-ChildItem C:\MYDIRECTORY -Recurse).fullname > filename.txt 
+11

यह सच है। एक चेतावनी: यह आदेश वास्तव में '* .txt *' ('-फिल्टर' सीएमडी वाइल्डकार्ड का उपयोग करता है) जैसी फ़ाइलें प्राप्त करता है। यदि यह वही नहीं है जो आप चाहते हैं तो 'शामिल करें * .txt' का उपयोग करें। –

6

यहाँ:

get-childitem "C:\windows\System32" -recurse | where {$_.extension -eq ".txt"} | % { 
    Write-Host $_.FullName 
} 
+8

यहां एक छोटा सा है: '(gci -r c: \)। पूर्णनाम' –

13

तुम भी Select-Object इसलिए की तरह उपयोग कर सकते हैं:

Get-ChildItem "C:\WINDOWS\System32" *.txt -Recurse | Select-Object FullName 
+4

ध्यान दें कि 'चयन-ऑब्जेक्ट' एक स्ट्रिंग नहीं 'PSCustomObject' लौटाता है। यदि आप किसी अन्य प्रोग्राम – Chintsu

+4

के लिए पैरामीटर के रूप में परिणाम का उपयोग करते हैं तो यह काम नहीं कर सकता है। @ चिंट्सु ने क्या कहा। 'PSCustomObject' के बजाय स्ट्रिंग प्राप्त करने के लिए, बस' FullName' के बजाय '-EppandProperty FullName' का उपयोग करें। जहां तक ​​मैं समझता हूं, '-EppandProperty' पैरामीटर cmdlet को कुछ कस्टम ऑब्जेक्ट के बजाए निर्दिष्ट गुण (मूल?) प्रकार के रूप में परिणामों को वापस करने का कारण बनता है। – doubleDown

1

इस प्रयास करें:

Get-ChildItem C:\windows\System32 -Include *.txt -Recurse | select -ExpandProperty FullName 
+2

कृपया अपने प्रयास के साथ क्या भिन्न है और दूसरे ने काम क्यों नहीं किया है, इस बारे में थोड़ी सी जानकारी जोड़ें। –

1
gci "C:\WINDOWS\System32" -r -include .txt | select fullname 
+5

क्या आप अपने समाधान को आपके द्वारा प्रदान किए गए समाधान के बारे में थोड़ा और विवरण जोड़कर विस्तारित कर सकते हैं? – abarisone

1

[विकल्प वाक्य रचना]

कुछ लोगों के लिए, दिशात्मक पाइप ऑपरेटरों उनके स्वाद नहीं हैं, लेकिन वे नहीं बल्कि चेनिंग पसंद करते हैं। रोसलीन मुद्दे ट्रैकर में साझा इस विषय पर कुछ रोचक राय देखें: dotnet/roslyn#5445

मामले और संदर्भ के आधार पर, इस दृष्टिकोण में से एक को अंतर्निहित (या अप्रत्यक्ष) माना जा सकता है। उदाहरण के लिए, इस मामले में अंकुरित के खिलाफ पाइप का उपयोग करने के लिए विशेष टोकन $_ (उर्फ PowerShell's "THIS" token) कुछ लोगों के लिए अशिष्ट दिखाई दे सकता है।

(gci . -re -fi *.txt).FullName 

(< शेख़ी> ध्यान दें कि PowerShell के आदेश तर्क पार्सर आंशिक पैरामीटर नाम स्वीकार करता है:

ऐसे दोस्तों के लिए, यहाँ अधिक संक्षिप्त, डॉट चेनिंग साथ यह कर की सीधी-सपाट तरीका है । तो -recursive के अलावा; -recursiv, -recursi, -recurs, -recur, -recu, -rec और -re स्वीकार किए जाते हैं, लेकिन दुर्भाग्य से नहीं -r .. जो केवल सही choic है ई जो एकल - चरित्र के साथ समझ में आता है (यदि हम POSIXy UNIXy सम्मेलनों द्वारा जाते हैं)! </शेख़ी >)

+1

रेंट को नोट करें: '-र'' का 'छोटा' रूप छोटा काम मेरे लिए ठीक काम करता है। – Polymorphix

+0

@ पॉलिमॉर्फिक्स, आप सही हैं, यह मेरे लिए विंडोज 10 पर काम कर रहा है (यह सुनिश्चित नहीं है कि मैं कौन सा संस्करण पहले कोशिश कर रहा था)। हालांकि, नमूना में '-फाइल' स्विच '-फि' के साथ भी सच है: '-फिल' और '-फाइल' काम करता है, लेकिन' -f' नहीं। POSIX शैली के अनुसार, यह '--file' (बहु-अक्षरों) और '-f' (एकल-अक्षर, जब तक कि किसी और के लिए आरक्षित नहीं है,' बल 'स्विच कहें, तो यह कुछ और हो सकता है '-l' या कोई एकल अक्षर विकल्प बिल्कुल नहीं)। –

0

यह मेरे लिए काम किया, और नामों की सूची का उत्पादन:

$Thisfile=(get-childitem -path 10* -include '*.JPG' -recurse).fullname 

मैं get-member -membertype properties, एक अविश्वसनीय रूप से उपयोगी कमांड का उपयोग करके यह पाया। अधिकांश विकल्पों में यह आपको .<thing> के साथ जोड़ा गया है, जैसे fullname यहां है।आप एक ही आदेश छड़ी कर सकते हैं;

| get-member -membertype properties 
किसी भी आदेश के अंत में

चीजें आप उन तक पहुँचने के लिए उन्हें और कैसे साथ क्या कर सकते बारे में अधिक जानकारी प्राप्त करने के लिए:

get-childitem -path 10* -include '*.JPG' -recurse | get-member -membertype properties 
3
Get-ChildItem -Recurse *.txt | Format-Table FullName 

है यही कारण है कि मैं क्या इस्तेमाल किया। मुझे लगता है कि यह अधिक समझ में आता है क्योंकि इसमें कोई लूप सिंटैक्स नहीं है।

5

यदि सापेक्ष पथ आप चाहते हैं तो आप केवल -Name ध्वज का उपयोग कर सकते हैं।

Get-ChildItem "C:\windows\System32" -Recurse -Filter *.txt -Name