|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Нужен батник чтоб удалял папки выше 10 дней |
|
|
CMD/BAT - Нужен батник чтоб удалял папки выше 10 дней
|
Новый участник Сообщения: 4 |
Профиль | Отправить PM | Цитировать Добрый день!
Смотрю есть люди которые выручают друг друга. Выручите народ пожалуйста и меня! Очень нужен бат-файл чтобы удалял старые папки свыше 10 дней. Пример: есть путь D:\arhiv В данной папке "arhiv" создаются папки с именем, формата "20110420" в которых содержатся файлы. Вот и нужен батник чтобы удалял все старые папки по данному пути. Заранее благодарен!!! |
|
Отправлено: 09:15, 03-07-2012 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать да еще забыл сказать, что в этих папках хронятся файлы формата .txt
|
Отправлено: 09:57, 03-07-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
(*.*) Сообщения: 36554
|
Профиль | Сайт | Отправить PM | Цитировать |
------- Отправлено: 10:08, 03-07-2012 | #3 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Vadikan, спасибо за совет, но там в основном написано как удалять файлы.
А это я знаю. Меня больше интересует как можно удалять папки сроком выше 10 дней. Но как известно папка не будет удалена пока она не пуста. Вот в этом и загвостка. По этому я к вам и пришел. Нужен батник который сможет удалять получается файлы в подкаталогах свыше 10 дней или сразу папки свыше 10 дней. Как написать я не знаю.... в этом деле не очень силен, так начинающий только. |
Отправлено: 10:50, 03-07-2012 | #4 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать @Echo Off Set Arhiv=D:\arhiv Set DeltaDay=-10 SetLocal EnableDelayedExpansion Call :FromNow %DeltaDay% %Date% FOR /F "usebackq delims=" %%d IN (`Dir "%Arhiv%\" /A:D /B`) DO If %%d LSS %yyyymmdd% Rd "%Arhiv%\%%d" /s /q GoTo :Eof :FromNow rem rem Пересчет даты на заданное кол-во дней rem Формат даты dd.mm.yyyy +- дни получим новые yyyymmdd rem rem Пример использования rem rem SetLocal EnableDelayedExpansion rem Set DeltaDay=-10 rem Call :FromNow %DeltaDay% %Date% rem Echo %Date% %DeltaDay% %yyyymmdd% SetLocal Set DT=%2 Set yyyy=%DT:~-4%& set /a mm=100%DT:~3,2%%%100& set /a dd=100%DT:~,2%%%100 Set /A JD=%~1+dd-32075+1461*(yyyy+4800+(mm-14)/12)/4+367*(mm-2-(mm-14)/12*12)/12-3*((yyyy+4900+(mm-14)/12)/100)/4 Set /A L=JD+68569,N=4*L/146097,L=L-(146097*N+3)/4,I=4000*(L+1)/1461001 Set /A L=L-1461*I/4+31,J=80*L/2447,K=L-2447*J/80,L=J/11 Set /A J=J+2-12*L,I=100*(N-49)+I+L Set /A yyyy=I,mm=100+J,dd=100+K EndLocal& Set yyyymmdd=%yyyy%%mm:~-2%%dd:~-2% GoTo :Eof Подозреваю, что короче получится, если использовать утилиту forfiles, но стандартно она имеется в системе далеко не всегда. |
|
------- Последний раз редактировалось megaloman, 03-07-2012 в 11:26. Отправлено: 11:14, 03-07-2012 | #5 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать megaloman, респект и уважение тебе! долгих лет жизни! Я в восторге! Все работает!
Но вот еще один вопрос появился, а можно ли в одном батнике написать несколько путей? в данном примере D:\arhiv, а можно допустим D:\arhiv\1\1\2 и D:\arhiv\1\1\3 Пример того что хочу объяснить: Set Arhiv=D:\arhiv\1\1\2 Set Arhiv=D:\arhiv\1\1\3 ...а потом уже пошло Set DeltaDay=-10 SetLocal EnableDelayedExpansion Call :FromNow %DeltaDay% %Date% Спасибо тебе огромное, megaloman |
Отправлено: 11:36, 03-07-2012 | #6 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Самое простое сделать несколько циклов последовательно вместо одного из предыдущего решения, если в папках всё те же архивы с именами по дате и убить надо одинаково старые папки
Если папок с архивами много, пишите, но хотелось бы знать, по какому правилу образованы их имена.
|
------- Последний раз редактировалось megaloman, 03-07-2012 в 11:56. Отправлено: 11:48, 03-07-2012 | #7 |
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать |
Отправлено: 14:15, 03-07-2012 | #8 |
Новый участник Сообщения: 10
|
Профиль | Отправить PM | Цитировать vbs удаляет все в указанной директории
set fso=Wscript.CreateObject("Scripting.FileSystemObject") dir="C:\mail" Set f = fso.GetFolder(dir) Set fc = f.Files For Each f1 in fc d= f1.DateCreated diff=DateDiff("d",d,Now) if diff>10 Then # лол-во дней WScript.Echo "DELETE! " & f1.name fso.DeleteFile(dir & "\" & f1.name) end if Next |
Отправлено: 17:56, 29-04-2013 | #9 |
Новый участник Сообщения: 13
|
Профиль | Отправить PM | Цитировать Цитата:
|
|
Отправлено: 16:01, 03-07-2013 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - чтобы батник автоматически удалял бы все подкаталоги, размер которых | makc2364 | Скриптовые языки администрирования Windows | 1 | 19-12-2011 12:09 | |
CMD/BAT - нужен батник для сканирования папки | TuFED | Скриптовые языки администрирования Windows | 6 | 25-08-2011 23:06 | |
CMD/BAT - Нужен батник) ОПК 3.19 | siss | Тест-форум | 1 | 13-12-2010 20:38 | |
CMD/BAT - Батник запускающийся через каждые 14 дней | ofcoss | Скриптовые языки администрирования Windows | 3 | 07-09-2009 11:57 | |
Нужен макрос на VB чтобы в Ворде удалял лишние пробелы | Leon71 | Программирование и базы данных | 2 | 28-07-2003 02:26 |
|