Войти

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


BRAT2
01-04-2009, 06:40
подскажите пожалуйста текст bat файла который бы удалял файлы с именем AN*.log созданные за прошлые сутки. Меня больше интересует как реализуется поиск файлоы за прошлые сутки и их удалениею. спасибо

amel27
06-04-2009, 08:51
где-то так... =)

@Echo Off
SetLocal EnableDelayedExpansion

Set ROOT=C:\DIR\AN*.log

Call :GetDate
Call :GetYesterday

For %%i In (%ROOT%) Do For /F "Tokens=1" %%j In ("%%~ti") Do If "%%j"=="%Yesterday%" DEL /F/Q "%%i"
Exit

Rem Восстановление вчерашней даты
:GetYesterday
Call :GetMnthDays
Set /A Day-=1
IF %Day% EQU 0 (
Set /A MNDF=%Year%*12+%Month%-2
Set /A Year=!MNDF!/12
Set /A Month=!MNDF!-!Year!*12+1

Call :GetMnthDays
Set /A Day=!MnthDays!
)
Set Month=0%Month%&Set Day=0%Day%
Set Month=%Month:~-2%&Set Day=%Day:~-2%

If %iDate%==0 Set Yesterday=%Month%%sDate%%Day%%sDate%%Year%
If %iDate%==1 Set Yesterday=%Day%%sDate%%Month%%sDate%%Year%
If %iDate%==2 Set Yesterday=%Year%%sDate%%Month%%sDate%%Day%
GoTo :EOF

Rem Число дней в заданном месяце
:GetMnthDays
Call :IsYearVisok
For /F "Tokens=%Month%" %%i IN ("31 28 31 30 31 30 31 31 30 31 30 31") Do Set MnthDays=%%i
If %Month% EQU 2 Set /A MnthDays += %IsVisok%
GoTo :EOF

Rem Проверка года на високосность
:IsYearVisok
Set /A M1=%Year%-(%Year%/4)*4
Set /A M2=%Year%-(%Year%/100)*100
Set /A M3=%Year%-(%Year%/400)*400

Set IsVisok=0
If 0 EQU %M1% If 0 NEQ %M2% Set IsVisok=1
If 0 EQU %M3% Set IsVisok=1
GoTo :EOF

Rem Чтение текущей даты в переменные окружения
:GetDate
For /F "Tokens=1,3" %%i IN ('REG QUERY "HKCU\Control Panel\International" /s^|FindStr /C:"iDate" /C:"sDate"') DO Set %%i=%%j
For /F "Tokens=1-4* Delims=%sDate% " %%A IN ("%Date%") Do (
If %iDate% EQU 0 Set Year=%%C&Set Month=%%A&Set Day=%%B
If %iDate% EQU 1 Set Year=%%C&Set Month=%%B&Set Day=%%A
If %iDate% EQU 2 Set Year=%%A&Set Month=%%B&Set Day=%%C
)
GoTo :EOF




© OSzone.net 2001-2012