मुझे किसी भी एक्सप्लोरर ऐड-ऑन का पता नहीं है, लेकिन विंडोज की अधिकांश चीजों की तरह, यह PowerShell के साथ किया जा सकता है:
ForEach ($Drive in Get-PSDrive -PSProvider FileSystem) {
$Path = $Drive.Name + ':\$Recycle.Bin'
Get-ChildItem $Path -Force -Recurse -ErrorAction SilentlyContinue |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) } |
Remove-Item -Recurse
}
इस स्क्रिप्ट को एक .ps1
एक्सटेंशन के साथ एक पाठ फ़ाइल के रूप में सहेजें । फिर आप इसे नियमित अंतराल पर चलाने के लिए टास्क शेड्यूलर का उपयोग कर सकते हैं।
सबसे पहले, हालाँकि, आपको PowerShell स्क्रिप्ट के निष्पादन की अनुमति देने की आवश्यकता है, क्योंकि डिफ़ॉल्ट रूप से आप केवल PowerShell प्रॉम्प्ट में सीधे टाइप की गई कमांड निष्पादित कर सकते हैं। ऐसा करने के लिए, PowerShell खोलें और निम्न कमांड टाइप करें:
Set-ExecutionPolicy RemoteSigned
संकेत दिए जाने पर "y" या "हां" टाइप करें। Get-Help Set-ExecutionPolicy
अधिक जानकारी के लिए देखें ।
अब कार्य शेड्यूलर खोलें और निम्नलिखित मापदंडों के साथ एक नया कार्य बनाएँ:
- "सामान्य" टैब के तहत, एक नाम दर्ज करें और "उच्चतम विशेषाधिकार के साथ चलाएँ" विकल्प की जांच करें
- "ट्रिगर" टैब के तहत, एक नया ट्रिगर जोड़ें और दैनिक चलाने के लिए कार्य सेट करें
- "क्रियाएँ" टैब के तहत, एक नई क्रिया जोड़ें:
- टाइप करें "प्रोग्राम शुरू करें"
- "प्रोग्राम / स्क्रिप्ट" फ़ील्ड पर सेट करें
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
- में "तर्क जोड़ें" फ़ील्ड सेट करें
-NonInteractive -File "C:\path\to\script.ps1"
- "शर्तों" टैब के तहत, "एसी बिजली पर कंप्यूटर होने पर ही कार्य शुरू करें" को अनचेक करें
स्क्रिप्ट की लाइन-दर-पंक्ति व्याख्या:
ForEach ($Drive in Get-PSDrive -PSProvider FileSystem) {
यह कंप्यूटर में सभी ड्राइव की एक सूची प्राप्त करता है और एक-एक करके उनके माध्यम से लूप करता है। -PSProvider FileSystem
पैरामीटर, केवल वापसी डिस्क ड्राइव करने के लिए आवश्यक है क्योंकि PowerShell भी रजिस्ट्री पित्ती की तरह विभिन्न अन्य चीजों के लिए pseudodrives है।
अधिक जानकारी के लिए, PowerShell में लूप प्रोसेसिंग पर यह ट्यूटोरियल देखें Get-Help Get-PSDrive
और देखें ।
$Path = $Drive.Name + ':\$Recycle.Bin'
यह वर्तमान ड्राइव पर रीसायकल बिन फ़ोल्डर के लिए पथ का निर्माण करता है। PowerShell को व्याख्या करने से रोकने के लिए, दूसरे भाग के चारों ओर एकल उद्धरणों के उपयोग पर ध्यान दें$Recycle
को एक चर के रूप में ।
Get-ChildItem $Path -Force -Recurse -ErrorAction SilentlyContinue |
यह दिए गए पथ के तहत सभी फ़ाइलों और सबफ़ोल्डरों को लौटाता है (जिसे हमने पिछली कमांड के साथ बनाया था)। -Force
पैरामीटर छिपे रहते हैं और सिस्टम फ़ोल्डर में जाने के लिए की जरूरत है, और -Recurse
पैरामीटर आदेश पुनरावर्ती बना देता है, अर्थात्। सभी उपनिर्देशिकाओं के माध्यम से भी पाश।-ErrorAction
अधिकांश PowerShell आदेशों के लिए एक मानक पैरामीटर है, और मान SilentlyContinue
कमांड त्रुटियों को अनदेखा करता है। इसका उद्देश्य उन ड्राइव के लिए त्रुटियों को रोकना है जिन्हें तुरंत फ़ाइलों को हटाने के लिए कॉन्फ़िगर किया गया है। |
बहुत अंत पाइप अगले आदेश के लिए परिणामों को प्रतीक; बेहतर पठनीयता के लिए मैंने इसे कई पंक्तियों में विभाजित किया।
अधिक जानकारी के लिए, देखें Get-Help Get-ChildItem
।
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) } |
यह केवल पिछली कमांड के परिणामों को फ़िल्टर करता है और केवल उन्हीं को लौटाता है जो 30 दिनों से अधिक पुराने होते हैं। $_
वर्तमान में संसाधित की जा रही वस्तु को संदर्भित करता है, औरLastWriteTime
इस मामले में संपत्ति उस तारीख और समय को संदर्भित करती है जो फ़ाइल हटा दी गई थी। Get-Date
वर्तमान दिनांक लौटाता है।
अधिक जानकारी के लिए, देखें Get-Help Where-Object
और Get-Help Get-Date
।
Remove-Item -Recurse
यह केवल पिछली कमांड द्वारा इसमें पास की गई वस्तुओं को हटा देता है। -Recurse
पैरामीटर स्वचालित रूप से गैर खाली सबफ़ोल्डरों की सामग्री को हटा देता है; इसके बिना, आपको ऐसे फ़ोल्डर के लिए संकेत दिया जाएगा।
अधिक जानकारी के लिए, देखें Get-Help Remove-Item
।