Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] батник, который удаляет файлы ранее определенной даты

Ответить
Настройки темы
CMD/BAT - [решено] батник, который удаляет файлы ранее определенной даты

Старожил


Сообщения: 186
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый день. Помогите написать батник - на сетевом диске есть файлы вида VideoSeq-dd.mm.gggg--time.avi нужно, чтобы на сетевом диске оставались файлы максимум с датой недельной давности, а остальные удалялись.

Отправлено: 13:58, 16-01-2013

 

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


foma24, в каком формате у Вас «time»? Также приведите примеры имён реальных файлов.

Отправлено: 14:26, 16-01-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 186
Благодарности: 0

Профиль | Отправить PM | Цитировать


формат time чч.мм.сс
примеры:
VideoSeq-01.09.2013--10.50.06.avi
VideoSeq-01.10.2013--15.50.11.avi
VideoSeq-01.10.2013--16.21.02.avi
VideoSeq-01.11.2013--11.20.11.avi

Отправлено: 15:00, 16-01-2013 | #3


Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@Echo Off
SetLocal EnableDelayedExpansion
:: путь в папке с файлами
Set folder=\\server\3 3
:: удаляем старее 7 дней
Set old=7
:: формат имен файлов
:: VideoSeq-mm.dd.gggg--time.avi 
:: VideoSeq-12.31.2013--09.22.33.avi
:: ВАЖНО!
:: Разделители (- и .), их расположение в имени и положение даты в имени должны быть неизменны. 
:: До первого тире перед датой не должно быть разделителей, а буквы могут быть любые и в любом количесте.

For /F "Tokens=1 Delims=." %%i In ('WMIC OS Get LocalDateTime^|Find "."') Do Set tim=%%i
Set YYYY=%tim:~0,4%&Set MM=%tim:~4,2%&Set DD=%tim:~6,2%
Echo Now	%DD% %MM% %YYYY%
Call :GetOldDate %old%
Echo Old	%DD% %MM% %YYYY%
:: после проверки слово Echo удалить
For /F "tokens=* delims=" %%i In ('dir /S /A:-D /B "%folder%\*.avi" 2^>Nul') Do (
	For /F "tokens=2,3,4 delims=-." %%a In ("%%~nxi") Do If %YYYY%%MM%%DD% GTR %%c%%a%%b Echo Del /F /Q "%%i"
)
Pause
Exit

:GetOldDate
Set MM=1%MM%&Set DD=1%DD%
Set /A MM-=100, DD-=100
Set /A DD-=%1
If %DD% GTR 0 GoTo formatMM_DD
Set /A MM=MM+11-((MM+10)/12)*12
If %MM%==12 Set /A YYYY-=1
For /F "Tokens=%MM%" %%i In ("31 28 31 30 31 30 31 31 30 31 30 31") Do Set X=%%i
If %MM%==2 (
	Set /A B1=YYYY%%4, B2=YYYY%%100, B3=YYYY%%400
	If !B1!==0 If Not !B2!==0 Set /A X+=1
	If !B3!==0 Set /A X+=1
)
Set /A DD=DD+X-((DD+X-1)/X)*X
:formatMM_DD
Set MM=0%MM%&Set DD=0%DD%
Set MM=%MM:~-2%&Set DD=%DD:~-2%
GoTo :EOF

Последний раз редактировалось gora, 18-01-2013 в 17:29. Причина: изменеия формата даты "заказчиком" :)

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:35, 18-01-2013 | #4


Старожил


Сообщения: 186
Благодарности: 0

Профиль | Отправить PM | Цитировать


Прошу прощения, ошибся формат даты не dd.mm.gggg а mm.dd.gggg Что нужно поменять в батнике ?

Отправлено: 16:08, 18-01-2013 | #5


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата foma24:
Прошу прощения, ошибся формат даты не dd.mm.gggg а mm.dd.gggg Что нужно поменять в батнике ? »
Вот тут и понимаешь, как рождаются предложения вида «Я в а@@е!»

Отправлено: 16:37, 18-01-2013 | #6


Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Цитата foma24:
ошибся формат даты не dd.mm.gggg а mm.dd.gggg »
Скрипт изменен в соответствии с новой вводной.
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:31, 18-01-2013 | #7


Старожил


Сообщения: 186
Благодарности: 0

Профиль | Отправить PM | Цитировать


все работает, огромное спасибо

Отправлено: 09:50, 21-01-2013 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] батник, который удаляет файлы ранее определенной даты

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Доступ - [решено] Запрет на открытие архива до определенной даты Vlademort Хочу все знать 6 19-10-2012 07:08
Работа программы до определенной даты malev AutoIt 29 11-12-2010 19:22
CMD/BAT - батник который считает файлы LeonanVasia Скриптовые языки администрирования Windows 1 28-09-2009 05:55
VBS/WSH/JS - [решено] Удаление файлов созданных ранее текущей даты на неделю KillHunter Скриптовые языки администрирования Windows 5 06-03-2009 12:23
Прочие БД - Interbase 7,удаление всех записей до определенной даты dima-sh Программирование и базы данных 1 27-02-2009 01:27




 
Переход