Войти

Показать полную графическую версию : Удаление старых файлов по имени файлов


Bиктор
18-04-2010, 17:01
Помогите пожалуйста, напишите bat файл, который оставлял в папке последние 2 архива (т.е. 2 zip и одноименные 2 log к ним ), бекапы делаются не обязательно каждый день.

файлы по такому шаблону идут.
DPA_DD-MM-YYYY_dif.zip
DPA_DD-MM-YYYY_dif.log
в имени меняются только даты DD-MM-YYYY
DPA_05-04-2010_dif.zip
DPA_05-04-2010_dif.log
DPA_06-04-2010_dif.zip
DPA_06-04-2010_dif.log
DPA_08-04-2010_dif.zip
DPA_08-04-2010_dif.log
DPA_09-04-2010_dif.zip
DPA_09-04-2010_dif.log
DPA_11-04-2010_dif.zip
DPA_11-04-2010_dif.log
DPA_13-04-2010_dif.zip
DPA_13-04-2010_dif.log
DPA_14-04-2010_dif.zip
DPA_14-04-2010_dif.log

видел нечто похожее в теме "удаление файлов по маске, созданных за прошлые сутки" (http://forum.oszone.net/thread-136464.html ) но скрипт с датами и мне не подходит.

amel27
Спасибо большое, проблемы с интернетом не смог ответить разу.

amel27
19-04-2010, 03:37
оставлял в папке последние 2 архива»
вариант 1:
For /F "Tokens=2-4 Delims=_-" %%i In ('DIR /B/A-D DPA_??-??-????_dif.zip') Do Set $_%%k%%j%%i=DPA_%%i-%%j-%%k_dif.*
For /F "Tokens=2 Skip=2 Delims==" %%i In ('Set $_^|Sort /R') Do DEL /Q/F %%i

вариант 2:
If Exist %~n0.tmp DEL %~n0.tmp
For /F "Tokens=2-4 Delims=_-" %%i In ('DIR /B/A-D DPA_??-??-????_dif.zip') Do Echo %%k%%j%%i DPA_%%i-%%j-%%k_dif.* >>%~n0.tmp
For /F "Tokens=2 Skip=2" %%i In ('Sort /R %~n0.tmp') Do DEL /Q/F %%i




© OSzone.net 2001-2012