फ़ाइलें हटाएँ (x) दिनों से अधिक पुरानी?


31

(N) दिनों से अधिक पुराने फ़ोल्डर में सभी फ़ाइलों को हटाने के लिए एक अच्छा विंडोज कमांड लाइन विकल्प क्या है?

यह भी ध्यान दें कि इनमें से कई हजारों फाइलें हो सकती हैं, इसलिए forfilesएक शेल के साथ cmdयहां एक महान विचार नहीं है .. जब तक कि आप हजारों कमांड शेल को खोलना पसंद नहीं करते। मुझे लगता है कि एक बहुत बुरा हैक, तो चलो देखते हैं कि क्या हम बेहतर कर सकते हैं!

आदर्श रूप से, विंडोज सर्वर 2008 में (या आसानी से इंस्टॉल करने योग्य) कुछ बनाया गया है।


2
आंतरिक सीएमडी.ईएक्सई कमांड का उपयोग करने वाली एक .BAT फाइल पर आधारित एक नई विधि केवल यहां पोस्ट की गई है: stackoverflow.com/questions/9746778/…

जवाबों:


43

मैंने थोड़ा और चारों ओर देखा और एक शक्तिशाली तरीका पाया :

निर्दिष्ट फ़ोल्डर से 8 दिनों से अधिक पुरानी सभी फ़ाइलों को हटा दें (पूर्वावलोकन के साथ)

dir |? {$_.CreationTime -lt (get-date).AddDays(-8)} | del -whatif

(इसे हटाने के लिए -whatif निकालें)


1
पुष्टि करने के लिए, क्या यह फ़ाइलों को स्थायी रूप से हटा देता है या उन्हें रीसायकल करता है?
टिम्स

ऑप्स बहुत कठिन याद के लिए !! मैं powershell प्यार, लेकिन मैं बेहतर तरीका उपयोग कर रहा है लगता है robocopy
AminM

7

जेफ के पॉवरशेल कमांड को प्यार करें, लेकिन पॉवरशेल के बिना विंडोज मशीनों के लिए एक वैकल्पिक vbs समाधान के लिए आप निम्नलिखित प्रयास कर सकते हैं।

के रूप में सहेजें <filename>.vbsऔर निष्पादित करें:

<filename>.vbs <target_dir> <NoDaysSinceModified> [Action]

तीसरा पैरामीटर, [Action]वैकल्पिक है। इसके बिना इससे अधिक पुरानी फाइलें <NoDaysSinceModified>सूचीबद्ध होंगी। इसके साथ यह सेट के रूप में Dयह से पुराने फ़ाइलों को हटा देगा<NoDaysSinceModified>

उदाहरण

PurgeOldFiles.vbs "c:\Log Files" 8

8 दिनों से अधिक पुराने सभी फाइलों को सूचीबद्ध करेगाc:\Log Files

PurgeOldFiles.vbs "c:\Log Files" 8 D

8 दिनों से अधिक पुरानी सभी फ़ाइलों को हटा देगाc:\Log Files

नोट: यह SQLServerCentral.com पर हैडॉन्ग जी की स्क्रिप्ट का एक संशोधित संस्करण है

Option Explicit
on error resume next
    Dim oFSO
    Dim sDirectoryPath
    Dim oFolder
    Dim oFileCollection
    Dim oFile
    Dim iDaysOld
    Dim fAction

    sDirectoryPath = WScript.Arguments.Item(0)
    iDaysOld = WScript.Arguments.Item(1)
    fAction = WScript.Arguments.Item(2)
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    set oFolder = oFSO.GetFolder(sDirectoryPath)
    set oFileCollection = oFolder.Files

If UCase(fAction) = "D" Then
'Walk through each file in this folder collection. 
'If it is older than iDaysOld, then delete it.
    For each oFile in oFileCollection
        If oFile.DateLastModified < (Date() - iDaysOld) Then
            oFile.Delete(True)
        End If
    Next
else
'Displays Each file in the dir older than iDaysOld
    For each oFile in oFileCollection
        If oFile.DateLastModified < (Date() - iDaysOld) Then
            Wscript.Echo oFile.Name & " " & oFile.DateLastModified
        End If
    Next
End If


'Clean up
    Set oFSO = Nothing
    Set oFolder = Nothing
    Set oFileCollection = Nothing
    Set oFile = Nothing
    Set fAction = Nothing

मैं पुराने वेब सर्वर लॉग को हटाने के लिए कुछ इस तरह का उपयोग करता हूं। बहुत अच्छा काम किया है।
jeffspost

4

वास्तव में कमांड लाइन नहीं है, लेकिन मैं LINQPad को C # स्क्रिप्टिंग होस्ट के रूप में उपयोग करना पसंद करता हूं :
(जो मुझे कमांड लाइन C # स्क्रिप्टिंग thingie à la vbs फ़ाइलों के लिए एक विचार देता है)

var files = from f in Directory.GetFiles(@"D:\temp", "*.*", SearchOption.AllDirectories)
            where File.GetLastWriteTime(f) < DateTime.Today.AddDays(-8)
            select f;

foreach(var f in files)
    File.Delete(f);

Linq वास्तव में भयानक है, काश PowerShell में लाता।
टेलर गिब

4

इस http://sourceforge.net/projects/delold पर एक नज़र डालें क्योंकि यह वही है जो मैं उपयोग करता हूं।

सरल लेकिन काम करता है। delold -d 14 पुराने फोल्डर को मौजूदा फ़ोल्डर में 14 दिन तक फाइल करता है।


3

साइबरविन (या अन्य वैकल्पिक) "खोज" कमांड के साथ कुछ इसी तरह हासिल किया जा सकता है। लेकिन इसके लिए आपको साइबरविन स्थापित करना होगा या हाथ में पोर्टेबल संस्करण होना चाहिए।



2

मैं अपने सिस्टम पर इसे पूरा करने के लिए ऑटिट का उपयोग करता हूं। मुझे पसंद है कि आप .au3 फ़ाइलों को आसानी से बाहर करने के लिए संकलित कर सकते हैं। किसी सुरक्षा दोष को लागू करना इतना आसान नहीं है जितना कि एक बैट फाइल के साथ कोई भी संपादित कर सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.