was haben die Attribute mit Datum zu tun ?!?!?
nix *gg* war nur eine Idee wie man separieren könnte in ‚löschen‘ oder ‚nicht löschen‘
Hallo Rafato,
tja mit ner kurzer Batch ist es bei normalem Dos nie weit her wenn es komplizierter wird. Und 3 Tage zurück in Einbeziehung von unterschiedlichen Monatslängen ist nicht so einfach.
Ich habe es so gelöst, daß immer der aktuelle Tag und 3 Tage davor erhalten bleiben. D.h. am 01. März im Schaltjahr löscht die batch dann alles außer dem 29-31 Februar *g*.
Ggfs, die sichern.bat ist überschaubar, fügst du jeweils noch Tage dazu, so daß dann immer nicht bis 3 sondern bis 5 Tage zurück die Dateien erhalten bleiben, dann bleiben auch im Schaltjahr noch die Dateien vom 27. und 28. Februar erhalten wenn der 1 .März kommt.
Ansonsten scheinen die batches zu laufen in win98!, nur halt das erwähnte Problem beim Monatswechsel. War mir zu aufwendig dies auch noch auf alle Monaslängen zu perfektionieren. Die Batch erwartet das Datumsformat in der Form mm-tt-jjj , wenn das in mm/tt/jjjj vorliegt, müssen die beiden
find „-%2-“ …Befehle geändert werden auf find „%2/“… bzw. find "/%2/…, je nachdem wo der Tag steht.
Kopiere alle 4 folgenden *.bat in das Verzeichnis c:\x und rufe die dat4.bat auf.
Ansonsten ist es ja einfach ‚c:\x‘ mittels Ersetzen a in den Batches auf den korrekten Pfad zu x umzustellen.
Gruß
Reinhard
dat4.bat:
@echo off
if not „%1“=="" goto weiter
echo. | date > datum.tmp
for %%n in (01 02 03 04 05 06 07 08 09 10) do call %0 nix %%n
for %%n in (11 12 13 14 15 16 17 18 19 20) do call %0 nix %%n
for %%n in (21 22 23 24 25 26 27 28 29 30 31) do call %0 nix %%n
set heute=%tt%
for %%g in (*.*) do call dat5.bat %%g
for %%d in (*.*) do call loesch.bat %%d
xcopy c:\x\sichern*.*
echo j | del c:\x\sichern*.*
rd c:\x\sichern
cls
goto ende
weiter
find „-%2-“ datum.tmp > nul
if not errorlevel==1 if errorlevel==0 set tt=%2
ende
dat5.bat:
@echo off
if not „%2“=="" goto weiter
if „%1“==„DAT4.BAT“ goto ende
if „%1“==„DAT5.BAT“ goto ende
if „%1“==„DATUM.TMP“ goto ende
if „%1“==„LOESCH.BAT“ goto ende
if „%1“==„SICHERN.BAT“ goto ende
set dircmd=
set datei=%1
dir /a:-d | find /i „%1“ > datum.tmp
for %%n in (01 02 03 04 05 06 07 08 09 10) do call %0 nix %%n
for %%n in (11 12 13 14 15 16 17 18 19 20) do call %0 nix %%n
for %%n in (21 22 23 24 25 26 27 28 29 30 31) do call %0 nix %%n
call sichern.bat %datei% %heute% %tt%
goto ende
weiter
find „-%2-“ datum.tmp > nul
if not errorlevel==1 if errorlevel==0 set tt=%2
ende
loesch.bat:
@echo off
if „%1“==„DAT4.BAT“ goto ende
if „%1“==„DAT5.BAT“ goto ende
if „%1“==„SICHERN.BAT“ goto ende
if „%1“==„LOESCH.BAT“ goto ende
if „%1“==„DATUM.TMP“ goto ende
del %1
ende
sichern.bat:
@echo off
rem echo %1 %2 %3
if not exist c:\x\sichern\nul md c:\x\sichern
if „%2“==„01“ set kurz=29 30 31 01
if „%2“==„02“ set kurz=30 31 01 02
if „%2“==„03“ set kurz=31 01 02 03
if „%2“==„04“ set kurz=01 02 03 04
if „%2“==„05“ set kurz=02 03 04 05
if „%2“==„06“ set kurz=03 04 05 06
if „%2“==„07“ set kurz=04 05 06 07
if „%2“==„08“ set kurz=05 06 07 08
if „%2“==„09“ set kurz=06 07 08 09
if „%2“==„10“ set kurz=07 08 09 10
if „%2“==„11“ set kurz=08 09 10 11
if „%2“==„12“ set kurz=09 10 11 12
if „%2“==„13“ set kurz=10 11 12 13
if „%2“==„14“ set kurz=11 12 13 14
if „%2“==„15“ set kurz=12 13 14 15
if „%2“==„16“ set kurz=13 14 15 16
if „%2“==„17“ set kurz=14 15 16 17
if „%2“==„18“ set kurz=15 16 17 18
if „%2“==„19“ set kurz=16 17 18 19
if „%2“==„20“ set kurz=17 18 19 20
if „%2“==„21“ set kurz=18 19 20 21
if „%2“==„22“ set kurz=19 20 21 22
if „%2“==„23“ set kurz=20 21 22 23
if „%2“==„24“ set kurz=21 22 23 24
if „%2“==„25“ set kurz=22 23 24 25
if „%2“==„26“ set kurz=23 24 25 26
if „%2“==„27“ set kurz=24 25 26 27
if „%2“==„28“ set kurz=25 26 27 28
if „%2“==„29“ set kurz=26 27 28 29
if „%2“==„30“ set kurz=27 28 29 30
if „%2“==„31“ set kurz=28 29 30 31
if „%2“==„01“ set kurz=29 30 31 01
for %%c in ( %kurz% ) do if %3==%%c xcopy %1 c:\x\sichern > nul