Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Батник для очистки по дате (http://forum.oszone.net/showthread.php?t=288375)

3DpacTe 23-09-2014 20:21 2406258

Батник для очистки по дате
 
Добрый вечер. Есть папка в которой очень быстро скапливается большое количество файлов. Задача батника чтобы он один раз в день удалял файлы которым больше недели от роду. Помогите пожалуйста.

Iska 23-09-2014 20:50 2406267

3DpacTe, Вам надо определиться, какая из двух дат — дата создания или дата последней модификации — подразумевается в Вашем понимании.

3DpacTe 23-09-2014 22:52 2406313

Iska, Это будет дата создания

Iska 24-09-2014 05:44 2406375

Цитата:

Цитата 3DpacTe
Это будет дата создания »

Так, тогда Вам 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


3DpacTe 24-09-2014 08:05 2406394

Извиняюсь, я чайник. Что с этим кодом теперь делать?

Iska 24-09-2014 09:50 2406410

Сохраните в файл с расширением «.vbs», указав вместо «E:\Песочница\0399» путь к Вашей папке. Запустите на исполнение двойным щелчком. Если скрипт отработает корректно — создайте задание на его запуск, указав в параметрах ежедневное исполнение.

3DpacTe 24-09-2014 10:01 2406418

Всё сработало, спасибо большое.
Цитата:

Цитата Iska
создайте задание на его запуск, указав в параметрах ежедневное исполнение. »

А как это сделать?
И еще такой вопрос на будущее, как будет выглядеть код если нужно чтобы он работал на дату последнего изменения?

Iska 24-09-2014 11:13 2406454

Цитата:

Цитата 3DpacTe
А как это сделать? »

Зависит от Вашей ОС.

Как назначить задание в Microsoft Windows XP
Планирование задания

В качестве исполняемого файла укажите полный путь к скрипту.

mwz 24-09-2014 11:41 2406465

Цитата:

Цитата 3DpacTe
А как это сделать? »


3DpacTe 24-09-2014 14:56 2406557

Всем большое спасибо, но этот
Цитата:

Цитата 3DpacTe
И еще такой вопрос на будущее, как будет выглядеть код если нужно чтобы он работал на дату последнего изменения? »

вопрос еще актуален.

Iska 25-09-2014 08:30 2406801

Цитата:

Цитата 3DpacTe
И еще такой вопрос на будущее, как будет выглядеть код если нужно чтобы он работал на дату последнего изменения? »

3DpacTe, приношу Вам свои извинения, запамятовал. А когда вспомнил — свет отрубился :(.

Достаточно будет заменить свойство «.DateCreated» на свойство «.DateLastModified».

3DpacTe 25-09-2014 13:19 2406893

Спасибо, запустил, всё работает. Можно закрывать. Всем благодарности! :)

Gor303 31-10-2014 09:04 2422818

Iska,
Извините конечно, что влезаю в чужую тему, а не могли бы еще подправить скриптик что бы он удалял не только файлы, но и все папки внутри заданной?

Iska 31-10-2014 14:39 2422948

Gor303, сформулируйте полностью своё техзадание.

Gor303 04-11-2014 18:42 2424604

Iska, Мне нужно то же что и 3DpacTe, только вот скрипт удаляет только файлы внутри заданной папки, а у меня еще лежат там папки с файлами которые мне тоже надо удалять. Я попробовал, скрипт к сожалению удаляет только файлы - папки с файлами не трогает.

Georgio 04-11-2014 19:50 2424648

Gor303, а что делать, если папка старше семи дней по дате создания, а в ней находятся файлы моложе семи дней по дате создания?

Iska 04-11-2014 20:38 2424666

Именно. Или ещё и так:
Скрытый текст
Код:

\─Старая папка
└──Ещё одна старая папка
  └──И ещё одна старая папка
      └──А тут новая



Цитата:

Цитата Gor303
папки с файлами не трогает »

Подозреваю, что Вам нужен несколько иной скрипт — очистки папки типа «Для обмена», по принципу: раз в день удаляем файлы, созданные/модифицированные ранее даты, отстоящей от текущей на N дней, удаляем пустые папки (т.е., папка будет удалена, как только в ней не окажется файлов и вложенных папок).

sov44 04-11-2014 21:47 2424684

Можно попробовать удалить папки с помощью сторонней утилитки XFORFILES от Smitis
примерно так
Цитата:

Папки старше семи дней
Код:

xforfiles /d:7 /f /c rm /s/q "{file}"

http://www.cyberforum.ru/cmd-bat/thread1205207.html

Gor303 05-11-2014 06:55 2424800

Georgio, Я даже и не подумал об этом :) Но мне это не требуется. Iska, правильно подметил
Цитата:

Цитата Iska
Подозреваю, что Вам нужен несколько иной скрипт — очистки папки типа «Для обмена», по принципу: раз в день удаляем файлы, созданные/модифицированные ранее даты, отстоящей от текущей на N дней »

Но удалять надо и папки и файлы, с
Цитата:

а что делать, если папка старше семи дней по дате создания, а в ней находятся файлы моложе семи дней по дате создания?
- удалять!

Gor303 06-11-2014 10:47 2425382

Ребята извините, что потревожил. Решил сделать проще. Удаление всех файлов и папок, не смотря на дату создания или изменения, ну и засунул в планировщик. Этого мне вполне хватит.
Код простой: cd /d D:\RAW && rmdir /s /q .
Откликнувшемся - большое спасибо! :)


Время: 00:25.

Время: 00:25.
© OSzone.net 2001-