2012-07-19 8 views
9

के साथ फॉरएच का उपयोग करना मैं किसी विशेष सबफ़ोल्डर संरचना में फ़ाइलों की रिकर्सिव सूची प्राप्त करने का प्रयास कर रहा हूं, फिर उन्हें एक तालिका में सहेजें ताकि मैं प्रत्येक पंक्ति के साथ काम करने के लिए फ़ोरैच लूप का उपयोग कर सकूं। अगर मैं, उत्पादन $table के रूप में है, यह एकदम सही लग रहा है करने के लिए प्रयास सभी फ़ाइलों के लिए डेटा के दो स्तंभों के साथGet-ChildItem -recurse

$table = get-childitem -recurse | where {! $_.PSIsContainer} | Format-Table Name, Length 

foreach ($row in $table) 
{ 
    $row[0] 
    $row[1] 
} 

: मैं निम्नलिखित कोड है। अगर मैं फोरैच (ऊपर की तरह) के साथ प्रयास करता हूं और कदम उठाता हूं, तो मुझे "Unable to index into an object of type Microsoft.PowerShell.Commands.Internal.Format.FormatEndData." त्रुटि संदेश मिलता है।

मैं क्या गलत कर रहा हूं?

उत्तर

9

मुझे नहीं पता कि आप स्वरूपित डेटा के माध्यम से क्यों कदम उठाने का प्रयास कर रहे हैं। लेकिन जैसा कि है, $table सिर्फ स्ट्रिंग का संग्रह है। तो आप निम्न कार्य कर सकते हैं:

$table = get-childitem -recurse | where {! $_.PSIsContainer} | Format-Table Name, Length 

foreach ($row in $table) 
{ 
    $row 
} 

लेकिन मुझे नहीं पता कि आप क्यों चाहते हैं। क्या इसके लायक है के लिए

$files = get-childitem -recurse | where {! $_.PSIsContainer} 
foreach ($file in $files) 
{ 
    $file.Name 
    $file.length 
} 
+0

जो मैं करने की कोशिश कर रहा हूं वह जीसीआई से डेटा की एक सरणी बना रहा है, फिर फोरैच लूप और "इंसर्ट इंंटो" कमांड का एक श्रृंखला का उपयोग करके एक एसक्यूएल टेबल बनाएं। आपके दूसरे उदाहरण ने मुझे बिल्कुल वही मिला जो मुझे चाहिए। धन्यवाद! –

8

जब तक आप पूरी तरह से डेटा के साथ काम पूरा नहीं कर लेते हैं, तब तक प्रारूप प्रारूपों का उपयोग न करें। प्रारूप कमांड सबकुछ स्ट्रिंग में कनवर्ट करते हैं, इसलिए आप मूल ऑब्जेक्ट्स खो देते हैं।

$table = get-childitem -recurse | where {! $_.PSIsContainer} 
foreach($file in $table){ 
    $file.Name 
    $file.FullName 
} 
+2

, इस पकड़ लिया पर्याप्त ऊपर आता है कि मुझे यकीन है कि एक शिकार सवाल वहाँ कहीं नहीं है कर रहा हूँ: यदि आप इस कोशिश आप फ़ाइल में डेटा के साथ कुछ करने के लिए प्रयास कर रहे हैं हो सकता है। मैंने एक जल्दी नहीं देखा। अगर कोई इसे पूरा करता है, तो पोस्ट करें और मुझे करीबी वोट मिलेंगे। – EBGreen

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