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

BRAT2 01-04-2009 06:40 1080761

удаление файлов по маске, созданных за прошлые сутки
 
подскажите пожалуйста текст bat файла который бы удалял файлы с именем AN*.log созданные за прошлые сутки. Меня больше интересует как реализуется поиск файлоы за прошлые сутки и их удалениею. спасибо

amel27 06-04-2009 08:51 1085360

где-то так... =)
Код:

@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



Время: 10:23.

Время: 10:23.
© OSzone.net 2001-