Как я удаляю старые файлы из каталога при хранении новых в Windows [дубликат]

Вы можете попробовать Webrenderer или Ice Browser

5
задан Community 23 May 2017 в 12:18
поделиться

5 ответов

Самым простым путем был бы .bat выполненный файл, выполненный еженедельно или ежемесячно.

cd \mylog\dir
mkdir archive
del /Q .\archive\*.log
move *.log .\archive

Если Вы хотите что-то более сложное, изучают загрузку cygwin инструментов, чтобы использовать un*x как команды или возможно изучить Powershell.

4
ответ дан 18 December 2019 в 07:58
поделиться

С VBScript, адаптированным от ScriptingAnswers

Dim fso, startFolder, OlderThanDate
Set fso = CreateObject("Scripting.FileSystemObject")

startFolder = "E:\temp"           ' folder to start deleting (subfolders will also be cleaned)

OlderThanDate = DateAdd("d", -07, Date)  ' 07 days (adjust as necessary)

DeleteOldFiles startFolder, OlderThanDate

Function DeleteOldFiles(folderName, BeforeDate)
    Dim folder, file, fileCollection, folderCollection, subFolder

    Set folder = fso.GetFolder(folderName)

    Set fileCollection = folder.Files

    For Each file In fileCollection
        If file.DateLastModified < BeforeDate Then
            ' fso.DeleteFile(file.Path)    # Modify this to delete after testing
            WScript.StdOut.WriteLine (file.Path)
        End If
    Next

    Set folderCollection = folder.SubFolders
    For Each subFolder In folderCollection
        DeleteOldFiles subFolder.Path, BeforeDate
    Next

End Function

Можно запустить этот скрипт с CScript

@Jason: хорошая утилита, FORFILES от Набора Ресурса

4
ответ дан 18 December 2019 в 07:58
поделиться

Запланируйте пакетный файл для обработки этого.

Эта строка удалит все файлы (*. *) в c:\mydirectory, которые являются более старыми, чем 14 дней:

FORFILES -pc:\mydirectory -s -m*.* -d-14 -c"DEL @FILE"

Помещенный, что в текстовом файле, переименуйте его к чему-то как "deletefiles.bat" и запланируйте его.

Я не протестировал это, но должен быть достаточно легок попробовать.


Править: При использовании этого удостоверьтесь, что Вы понимаете то, что происходит - флаг-s говорит этому рекурсивно вызывать подкаталоги, и это не может быть тем, что Вы хотите произойти. Кроме того, Вы, возможно, должны указать некоторые флаги для команды DEL также. :)


Править: Реализованный, что необходимо загрузить материал с Microsoft для FORFILES для работы. Мне нравится принятое решение также, так как у Вас не должно быть ничего специального. Единственная проблема состоит в том, что это только происходит каждые две недели вместо того, чтобы выполнять процесс ежедневно для удаления всех вещей, более старых, чем 14 дней. Поскольку, что это стоит. :P

4
ответ дан 18 December 2019 в 07:58
поделиться

Почему Вы не пишете пакетный файл или powershell сценарий и планируете его?

Сценарий для удаления файлов, более старых, чем указанная дата.

1
ответ дан 18 December 2019 в 07:58
поделиться

Это довольно тривиально, чтобы сделать, если у Вас есть жемчуг (или подобный) установленный на сервере:

#!perl
foreach my $file (</path/to/logs/*.log>) {
  next unless -M $file > 14;
  print "Deleting $file...\n";
  # unlink $file or die "Failed to remove $file: $!";
}

Строка, которая на самом деле делает удаление, комментируется, так как могли бы быть дети в доме :)

1
ответ дан 18 December 2019 в 07:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: