2015-11-05 8 views
8

मैं निर्देशिका में सभी फ़ोल्डर्स के माध्यम से रिकर्सिव लूप करने की कोशिश कर रहा हूं, फिर प्रत्येक निर्देशिका में कुछ करें। उदाहरण के लिए, एक टेक्स्ट फ़ाइल बनाएं।फ़ोल्डर के माध्यम से पावरहेल लूप, प्रत्येक फ़ोल्डर में फ़ाइल बनाएं

मैं बहुत की तरह एक चर में सभी सबफ़ोल्डर प्राप्त कर सकते हैं:

$folders = Get-ChildItem -Recurse | ?{ $_.PSIsContainer } 

हालांकि, मैं प्रत्येक उपनिर्देशिका के भीतर एक फ़ाइल बनाने के लिए नहीं कर पा रहे - फाइलों के बजाय शीर्ष निर्देशिका में बनाया जाता है। यह काम नहीं करता:

$folders | ForEach-Object { New-Item -ItemType file -Name "$_.txt" -path $_} 

वह एक त्रुटि है कि निर्देशिका नहीं मिला है निकलती है या पथ बहुत लंबा है कि।

मैं नेस्टेड फ़ोल्डरों की प्रत्येक उपनिर्देशिका में कुछ कैसे करूं?

उत्तर

15

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

Get-ChildItem -Recurse -Directory | ForEach-Object {New-Item -ItemType file -Path "$($_.FullName)" -Name "$($_.Name).txt" } 

असल में, Get-ChildItem आदेश DirectoryInfo वस्तुओं की एक अनुक्रम देता है। FullName संपत्ति में पूरा पथ होता है, जबकि Name में केवल पत्ता निर्देशिका का नाम शामिल है।

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