Batch file to delete files older than N days

前端 未结 24 2462
没有蜡笔的小新
没有蜡笔的小新 2020-11-21 11:11

I am looking for a way to delete all files older than 7 days in a batch file. I\'ve searched around the web, and found some examples with hundreds of lines of code, and oth

24条回答
  •  鱼传尺愫
    2020-11-21 11:58

    IMO, JavaScript is gradually becoming a universal scripting standard: it is probably available in more products than any other scripting language (in Windows, it is available using the Windows Scripting Host). I have to clean out old files in lots of folders, so here is a JavaScript function to do that:

    // run from an administrator command prompt (or from task scheduler with full rights):  wscript jscript.js
    // debug with:   wscript /d /x jscript.js
    
    var fs = WScript.CreateObject("Scripting.FileSystemObject");
    
    clearFolder('C:\\temp\\cleanup');
    
    function clearFolder(folderPath)
    {
        // calculate date 3 days ago
        var dateNow = new Date();
        var dateTest = new Date();
        dateTest.setDate(dateNow.getDate() - 3);
    
        var folder = fs.GetFolder(folderPath);
        var files = folder.Files;
    
        for( var it = new Enumerator(files); !it.atEnd(); it.moveNext() )
        {
            var file = it.item();
    
            if( file.DateLastModified < dateTest)
            {
                var filename = file.name;
                var ext = filename.split('.').pop().toLowerCase();
    
                if (ext != 'exe' && ext != 'dll')
                {
                    file.Delete(true);
                }
            }
        }
    
        var subfolders = new Enumerator(folder.SubFolders);
        for (; !subfolders.atEnd(); subfolders.moveNext())
        {
            clearFolder(subfolders.item().Path);
        }
    }
    

    For each folder to clear, just add another call to the clearFolder() function. This particular code also preserves exe and dll files, and cleans up subfolders as well.

提交回复
热议问题