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

Показать сообщение отдельно

Googler


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

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


где-то так...
Код: Выделить весь код
@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
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:51, 06-04-2009 | #2