Показать полную графическую версию : Батник для очистки по дате
Добрый вечер. Есть папка в которой очень быстро скапливается большое количество файлов. Задача батника чтобы он один раз в день удалял файлы которым больше недели от роду. Помогите пожалуйста.
3DpacTe, Вам надо определиться, какая из двух дат — дата создания или дата последней модификации — подразумевается в Вашем понимании.
Iska, Это будет дата создания
Это будет дата создания »
Так, тогда Вам forfiles не подойдёт.
На WSH:
Option Explicit
Dim strSourceFolder
Dim objFile
strSourceFolder = "E:\Песочница\0399"
With WScript.CreateObject("Scripting.FileSystemObject")
If .FolderExists(strSourceFolder) Then
For Each objFile In .GetFolder(strSourceFolder).Files
If DateDiff("d", objFile.DateCreated, Now()) > 7 Then
If objFile.Path <> WScript.ScriptFullName Then
objFile.Delete True
End If
End If
Next
Else
WScript.Echo "Can't find source folder [" & strSourceFolder & "]."
WScript.Quit 1
End If
End With
WScript.Quit 0
Извиняюсь, я чайник. Что с этим кодом теперь делать?
Сохраните в файл с расширением «.vbs», указав вместо «E:\Песочница\0399» путь к Вашей папке. Запустите на исполнение двойным щелчком. Если скрипт отработает корректно — создайте задание на его запуск, указав в параметрах ежедневное исполнение.
Всё сработало, спасибо большое.
создайте задание на его запуск, указав в параметрах ежедневное исполнение. »
А как это сделать?
И еще такой вопрос на будущее, как будет выглядеть код если нужно чтобы он работал на дату последнего изменения?
А как это сделать? »
Зависит от Вашей ОС.
Как назначить задание в Microsoft Windows XP (http://support.microsoft.com/kb/308569/ru)
Планирование задания (http://technet.microsoft.com/ru-ru/library/cc748993.aspx)
В качестве исполняемого файла укажите полный путь к скрипту.
А как это сделать? »
http://mwz-ru.homeserver.com/main/tests/shedule_sm.gif (http://mwz-ru.homeserver.com/main/tests/shedule.gif)
Всем большое спасибо, но этот И еще такой вопрос на будущее, как будет выглядеть код если нужно чтобы он работал на дату последнего изменения? »
вопрос еще актуален.
И еще такой вопрос на будущее, как будет выглядеть код если нужно чтобы он работал на дату последнего изменения? »
3DpacTe, приношу Вам свои извинения, запамятовал. А когда вспомнил — свет отрубился :(.
Достаточно будет заменить свойство «.DateCreated» на свойство «.DateLastModified».
Спасибо, запустил, всё работает. Можно закрывать. Всем благодарности! :)
Iska,
Извините конечно, что влезаю в чужую тему, а не могли бы еще подправить скриптик что бы он удалял не только файлы, но и все папки внутри заданной?
Gor303, сформулируйте полностью своё техзадание.
Iska, Мне нужно то же что и 3DpacTe, только вот скрипт удаляет только файлы внутри заданной папки, а у меня еще лежат там папки с файлами которые мне тоже надо удалять. Я попробовал, скрипт к сожалению удаляет только файлы - папки с файлами не трогает.
Gor303, а что делать, если папка старше семи дней по дате создания, а в ней находятся файлы моложе семи дней по дате создания?
Именно. Или ещё и так:
\─Старая папка
└──Ещё одна старая папка
└──И ещё одна старая папка
└──А тут новая
папки с файлами не трогает »
Подозреваю, что Вам нужен несколько иной скрипт — очистки папки типа «Для обмена», по принципу: раз в день удаляем файлы, созданные/модифицированные ранее даты, отстоящей от текущей на N дней, удаляем пустые папки (т.е., папка будет удалена, как только в ней не окажется файлов и вложенных папок).
Можно попробовать удалить папки с помощью сторонней утилитки XFORFILES (http://www.cyberforum.ru/cmd-bat/thread1267445.html) от Smitis
примерно так
Папки старше семи дней
xforfiles /d:7 /f /c rm /s/q "{file}"
http://www.cyberforum.ru/cmd-bat/thread1205207.html
Georgio, Я даже и не подумал об этом :) Но мне это не требуется. Iska, правильно подметилПодозреваю, что Вам нужен несколько иной скрипт — очистки папки типа «Для обмена», по принципу: раз в день удаляем файлы, созданные/модифицированные ранее даты, отстоящей от текущей на N дней »
Но удалять надо и папки и файлы, с а что делать, если папка старше семи дней по дате создания, а в ней находятся файлы моложе семи дней по дате создания? - удалять!
Ребята извините, что потревожил. Решил сделать проще. Удаление всех файлов и папок, не смотря на дату создания или изменения, ну и засунул в планировщик. Этого мне вполне хватит.
Код простой: cd /d D:\RAW && rmdir /s /q .
Откликнувшемся - большое спасибо! :)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.