Компьютерный форум 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=270503)

vat_ 23-10-2013 09:36 2239366

Удаление файлов по маске
 
Здравствуйте!
Помогите сделать батник для удаления файлов по дате в названии файла:
Нужно удалить все, кроме первого числа, 15 и последних трех дней месяца.

Список файлов:
Код:

backup_2013_06_01_063005_7754111.bak
backup_2013_07_01_063005_6924425.bak
backup_2013_08_01_200017_9697327.bak
backup_2013_08_15_200009_0656699.bak
backup_2013_09_01_200006_7489049.bak
backup_2013_10_01_200008_4867891.bak
backup_2013_10_12_200010_1011075.bak
backup_2013_10_13_200006_3820117.bak
backup_2013_10_14_200009_4088399.bak
backup_2013_10_15_200013_7679947.bak
backup_2013_10_16_200012_4026963.bak
backup_2013_10_17_200006_4841417.bak
backup_2013_10_18_200012_4547759.bak
backup_2013_10_19_200006_4802467.bak
backup_2013_10_20_200006_3705647.bak

________________________________________________________________


Вот что получилось у меня :)
Код:

@echo on
Set src=C:\dir\dir1\
For /R "%src%" %%i in (*_01_*,*_15_*,*_29_*,*_30_*,*_31_*) do attrib -a %%i
attrib -a %0
del /a:a /q /f *.*
pause


vat_ 28-10-2013 08:41 2242312

Условия изменились:
Нужно удалить все, кроме первого числа, 15 и последних трех дней.

Гуллипут 29-10-2013 19:45 2243420

Цитата:

Цитата vat_ (Сообщение 2242312)
Условия изменились:
Нужно удалить все, кроме первого числа, 15 и последних трех дней.

@echo off
for /F "skip=3" %%f in ('dir /o:-n /b backup_????_??_??_??????_???????.bak') do (
for /F "tokens=4 delims=_" %%s in ("%%f") do (
if not %%s==01 if not %%s==15 del %%f
)
)

vat_ 30-10-2013 06:46 2243635

Рабочий вариант:
Код:

@Echo off

Set src=C:\dir\dir1\
For /R "%src%" %%i in (*_201?_??_01_*,*_201?_??_15_*) do attrib -a %%i
attrib -a %0

SetLocal EnableDelayedExpansion

Call :FromNow -3
for %%i in (*.bak) do (
set $t=%%~ti& set $d=!$t:~6,4!!$t:~3,2!!$t:~,2!
if !$d! LSS %yyyymmdd% DEL /a:a /q /F "%%i"
)
Exit /B

:FromNow
SetLocal
Set yyyy=%DATE:~-4%& set /a mm=100%DATE:~3,2%%%100& set /a dd=100%DATE:~,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%
Exit /B



Время: 16:25.

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