मेरे पास एक निर्देशिका है जिसमें उपनिर्देशिका और फ़ाइलें शामिल हैं। मुझे सबफ़ोल्डर 1 के अंतर्गत छोड़कर सभी फ़ाइलों को हटाने की आवश्यकता है।पावरहेल - विशिष्ट उपनिर्देशिकाओं को छोड़कर सभी आइटम हटाएं
Initial State: Desired Output:
\ \
|_Folder1 |_Folder1
| |_File1.txt |_SubFolder1
| |_File2.xml |_File3.csv
| |_SubFolder1 |_File4.exe
| | |_File3.csv
| | |_File4.exe
| |_Subfolder2
|_Folder2
| |_ <more files here>
|_Folder3 (etc)
तो यहाँ मैं क्या करने की कोशिश की है:
Remove-Item * -exclude Folder1\Subfolder1\*
और मैं इस तरह की एक चेतावनी मिलती है:
Confirm
The item at C:\foo\Folder1 has children and the -recurse parameter was not specified.
If you continue, all children will be removed with the item. Are you sure you want to continue?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help
(default is "Y"):
जब मैं -recurse
निर्दिष्ट करने पर, हर फ़ाइल को हटा देता है, और उपेक्षा करने लगता है मेरी फिल्टर।
क्या चल रहा है, और यह करने का सही तरीका क्या है?
संपादित करें: मैंने एक ज़िप फ़ाइल शामिल की है जिसमें ऊपर के रूप में example folder structure है। यदि आप समाधान का परीक्षण करना चाहते हैं, तो कृपया इसके खिलाफ प्रयास करें। मैंने एक दूसरी ज़िप फ़ाइल भी शामिल की है जिसमें desired output है, ताकि आप यह जांच सकें कि यह काम कर रहा है या नहीं।
अच्छा काम @poorkenny! यह निश्चित रूप से अब तक का सबसे नज़दीक है, और केवल एक ही जो मेरे आवश्यक आउटपुट से मेल खाता है। हालांकि कुछ सुझाव: क्या "निकालें" पैरामीटर कार्य को "निकालें-आइटम" के लिए एक तरीका बनाने का कोई तरीका है (यानी एक पथ के बजाए बहिष्कृत की अल्पविराम से अलग सरणी लें)। पूर्ण लोगों की बजाय सापेक्ष पथों को अनुमति देना भी अच्छा होगा। – NeilD
हो गया। मैंने व्यापक परीक्षण नहीं किया है, लेकिन ऐसा लगता है कि यह चाल चल रहा है ... – Poorkenny
कूल। माइक्रोसॉफ्ट से एक गैर-टूटी-रिकर्स पैरामीटर की अनुपस्थिति में, मैं इसे सही उत्तर के रूप में चिह्नित कर रहा हूं। – NeilD