Re: batch smazani starych souboru

From: Petr Pokorny <mail (zavinac)>
Date: Mon, 21 May 2007 16:35:27 +0200
Radek Šafránek <safranek (zavinac) fg.cz>:

> jde o windows 2003 server:
> Jedna aplikace lije "kvantum" souboru do jednoho adresare.
> Typicky 2000 denne.
>
> Rozumne bude, pokud by se vse, co je starsi nez definovany pocet dnu
> mazalo.
> V tomto pripade bude stacit nejspise tyden.
>
> Lze tohoto "jednoduse" (a jak) dosahnout bat souborem - jen s
> vyuzitim dosu ve win serveru?
> Je to en edice - lokalni prostredi je cz.
>
> Zatim se rozhlizim ruzne po netu, nachazim batch soubry,
> ktere ale vyuzivaji externi prikazy... do tech se mi zatim jit
> nechce...


Jo, IMHO je to řešitelný.

Pomoci rozvinutych promennych (viz HELP FOR) si rozhodis dnesni datum do 
jednotlivych promennych, vynasobis je sekundama (SET /A) a sectes je 
dohromady.

Pak totez udelas pro kazdy soubor (FOR) a casy v sekundach porovnas. Pokud 
bude starsi nez xy sekund, smazes ho.

Nasledujici davka ti ukaze jak ziskas cas a datum souboru, pocitani si musis 
udelat sam pres SET /A a porovnani pres IF a zbytek uz zvladnes ;o)))

I kdyz ted me napada, ze bys mohl zkusit porovnat dva datumy, jestli to IF 
vyhodnoti spravne. Mozna to bude chodit. Jenze na to by sis do nejake 
promenne stejne nejprve musel sestavit datum tyden stary...


Jo a ta ukazka pocita s ceskym formatem data a casu, na anglickym by to 
nechodilo.

-pp21-

-------------------------------
@echo off

if not exist %1 goto nonFILE

set tmpDATE=%DATE%
set tmpTIME=%TIME: =0%

set actualDAY=%tmpDATE:~3,2%
set actualMONTH=%tmpDATE:~6,2%
set actualYEAR2=%tmpDATE:~11,2%
set actualYEAR4=%tmpDATE:~9,4%
set actualHOUR=%tmpTIME:~0,2%
set actualMIN=%tmpTIME:~3,2%
set actualSEC=%tmpTIME:~6,2%

set fileDATETIME=%~t1
set fileDAY=%fileDATETIME:~0,2%
set fileMONTH=%fileDATETIME:~3,2%
set fileYEAR2=%fileDATETIME:~8,2%
set fileYEAR4=%fileDATETIME:~6,4%
set fileHOUR=%fileDATETIME:~11,2%
set fileMIN=%fileDATETIME:~14,2%

set fileNAME=%~1
set fileNAMEPART=%~n1
set fileEXTPART=%~x1
set filePATH=%~dp1
set fileFULLPATH=%~f1

echo.
echo   popis          promenna        obsah
echo   ------------------------------------
echo aktualni datum a cas:
echo   den            actualDAY       %actualDAY%
echo   mesic          actualMONTH     %actualMONTH%
echo   rok (2 cifry)  actualYEAR2     %actualYEAR2%
echo   rok (4 cifry)  actualYEAR4     %actualYEAR4%
echo   hodina         actualHOUR      %actualHOUR%
echo   minuta         actualMIN       %actualMIN%
echo   sekunda        actualSEC       %actualSEC%
echo.
echo datum a cas souboru:
echo   den            fileDAY         %fileDAY%
echo   mesic          fileMONTH       %fileMONTH%
echo   rok (2 cifry)  fileYEAR2       %fileYEAR2%
echo   rok (4 cifry)  fileYEAR4       %fileYEAR4%
echo   hodina         fileHOUR        %fileHOUR%
echo   minuta         fileMIN         %fileMIN%
echo.
echo dalsi udaje o souboru:
echo   cele jmeno     fileNAME        %fileNAME%
echo   jmeno          fileNAMEPART    %fileNAMEPART%
echo   pripona        fileEXTPART     %fileEXTPART%
echo   cesta          filePATH        %filePATH%
echo   uplna cesta    fileFULLPATH    %fileFULLPATH%
echo.
echo.
echo Z techto promennych uz si muzete poskladat co chcete,
echo treba prokaz pro prejmenovani souboru:
echo REN "%fileNAME%" "%fileYEAR4%-%fileMONTH%-%fileDAY%_%fileNAME%"
echo.

goto END

:nonFILE
echo.
echo Tento soubor se musi volat s argumentem JMENO SOUBORU
echo.
echo priklad:   %0 soubor.txt
echo.

:END
--------------------------------- 
Received on 21. 05. 2007, 16:35 CEST

This archive was generated by hypermail 2.2.0 : 21. 05. 2007, 16:35 CEST