मैं एक स्क्रिप्ट लिखने की कोशिश कर रहा हूं जो फ़ोल्डर्स के एक सेट को देखेगा और केवल अंतिम 10 फाइलें रखेगा। प्रत्येक फ़ोल्डर में फ़ाइलों को दैनिक, साप्ताहिक या मासिक बनाया जा सकता है। सृजन तिथि या संशोधित तिथि के बावजूद मुझे 10 सबसे हाल की प्रतियां रखने के लिए स्क्रिप्ट की आवश्यकता है।फ़ाइलों की एक्स संख्या रखें और अन्य सभी को हटाएं - पावरहेल
एक और पोस्ट का उपयोग करके मैंने नीचे दी गई स्क्रिप्ट बनाई है, लेकिन यह 10 प्रतियां नहीं रखती है, यह 10 दिनों से पुरानी नहीं है।
$ftppath = "C:\Reports"
Get-ChildItem $ftppath -recurse *_Report_*.zip -force|where {$_.lastwritetime -lt (get-date).adddays(-10)} |Remove-Item -force
कोई विचार यह है कि मैं इसे काम करने के लिए कैसे ट्विक कर सकता हूं? यदि मैं नीचे लिपि का उपयोग करता हूं तो यह काम करता है, लेकिन केवल तभी जब मैं सेट नहीं करता हूं। यदि आप -रर्स स्विच का उपयोग करते हैं तो आपको एक त्रुटि मिलती है जिसे मैंने स्क्रिप्ट के नीचे सूचीबद्ध किया है।
# Keeps latest 10 files from a directory based on Creation Time
#Declaration variables
$path = "C:\Reports" # For example $path= C:\log\*.tmp
$total= (ls $path).count - 10 # Change number 5 to whatever number of objects you want to keep
# Script
ls $path |sort-object -Property {$_.CreationTime} | Select-Object -first $total | Remove-Item -force
Error: Select-Object : Cannot validate argument on parameter 'First'. The -7 argument is less than the minimum allowed range of 0. Supply an argument that is greater than 0 and then try the command again.
आह '-स्किप'। अच्छा और संक्षिप्त :-) +1 –
इसका परीक्षण कर रहा था और कुछ अजीब परिणाम प्राप्त हुए, यह सुनिश्चित नहीं था कि वहां क्या हो रहा था ... पुन: परीक्षण किया गया और यह काम कर रहा है जैसा कि मैं उम्मीद करता हूं। अच्छा 1 लाइनर। –
@ एंडी - हाँ, मैंने फ़ाइलों को बनाने के लिए आपके कोड की कोशिश की, और दूसरी बार मैंने इसे चलाया, सृजनटाइम सभी फ़ाइलों के लिए अपडेट नहीं हुआ। मुझे बिल्कुल नहीं पता कि क्यों: -/ – Rynant