grobmotoriker
Goto Top

Batch Datei Tag der Woche und 6 Tage davor für Variable

Nach einiger Suche kann ich nun mit dem im Netz gefundenen Batch Teilprogramm endlich 7 Ordner erstellen und in diese meine Dateien sichern. Nun würde ich ja gerne die ältesten Daten wieder löschen, was mir aber auch die meisten Probleme bereitet. Den DayofWeek Teil find ich ja so gut das ich ihn hier nochmals poste:

:: Wochentagsnummer und umwandlung in Tagesangaben
set daysofweek=Montag,Dienstag,Mittwoch,Donnerstag,Freitbag,Samstag,Sonntag
for /F "skip=2 tokens=2-4 delims=," %%A in ('WMIC Path Win32_LocalTime Get DayOfWeek /Format:csv') do set daynumber=%%A
for /F "tokens=%daynumber% delims=," %%B in ("%daysofweek%") do set day=%%B
echo Guten Morgen! Heute ist:
echo %day% der %date%
mkdir %daynumber% 2>nul
cd %daynumber%

Start meiner Sicherung (Die Wochentagsausgabe benutze ich bloß um vom Script mit dem richtigem Tag begrüßt zu werden)

Mein Problem nach 4 Wochen: Mein Dropboxordner in dem ich die Sicherung vornehme wird zu voll und ich muß händisch wieder löschen.
Ich hätte also gerne eine weitere Variable die jeweils 6 Tage "älter" ist. Also Bei Tag 1 (Montag) den Tag 7 als Löschvariable
Da ich Samstags nur manchmal und Sonntags selten den Rechner benutze, also auch nicht gesichert wird, müßte ich diese beiden Tage gesondert behandeln, Da mir ansonsten der Sonntag und Montag irgendwann mal übergeht. Ich komme also auf ein Maximum von Sicherungen der letzten 4 oder 5 Tage, und das reicht auch völlig.

Da ich leider nur begrenztes Batch-Wissen habe, stehe ich hier vollkommen an.

Bitte um eure Mithilfe

Content-Key: 213044

Url: https://administrator.de/contentid/213044

Printed on: April 23, 2024 at 20:04 o'clock

Member: bastla
bastla Jul 31, 2013 at 19:05:50 (UTC)
Goto Top
Hallo Grobmotoriker und willkommen im Forum!

So richtig klar ist mir zwar nicht, was Du genau mit "Löschvariable" meinst, aber "rotierend" um jeweils 6 Tage weiter zu gehen sollte sich etwa so machen lassen:
set /a Loesch=daynumber + 6
if %Loesch% gtr 7 set /a Loesch-=7
Grüße
bastla
Member: Biber
Biber Jul 31, 2013 updated at 20:58:27 (UTC)
Goto Top
Moin bastla,

ich glaube eher, er meint "wenn heute Mittwoch (=Wochentag 3 und Name des Backupordners auch 3 ) ist , dann kann ich den Sicherungsordner von vor 6 Tagen = letzten Donnerstag = Wochentag 4 löschen (wenn es den gibt)".

Das wäre auf bätschisch vom CMD-Prompt aber dann eher:
set /a loesch=daynumber % 7 +1  

Oder in Worten tagDerWoche modulo 7 plus 1.

also kann er noch die beiden Zeilen an seinen Batch vor der mkdir-Zeile einfügen
set /a loesch=daynumber %% 7 +1  
if exist %loesch% rd %loesch% /s /q
REM -oder- rd %loesch% /s /q 2>nul

Rem und dann wie oben..
mkdir %daynumber% 2>nul
...

Grüße
Biber
Member: Endoro
Endoro Jul 31, 2013 at 22:10:50 (UTC)
Goto Top
Hallo,
wie wärs mit forfiles:
forfiles /p "start path" /m * /d -7 /c "cmd /c echo del @file"  
lg.
Member: Grobmotoriker
Grobmotoriker Aug 03, 2013 at 11:09:53 (UTC)
Goto Top
forfiles??? muß ich mal testen.
Member: Grobmotoriker
Grobmotoriker Aug 03, 2013 updated at 11:23:11 (UTC)
Goto Top
Beitrag von "Biber"

Genau so hab ichs gemeint. wenn Heute Samstag ist, soll der Sonntag gelöscht werden, wenn heute Freitag dann der Samstag usw.
Einziges Problem, am Sonntag wird das Probgramm fast nie ausgeführt, also auch der Montag nicht gelöscht.

Ich dachte ja ich könnt das so ähnlich lösen, wie auch die Wochentage in meiner Ursprünglich benutzten batch in der for-Schleife einfach reingeschrieben werden. Ich brings aber nicht zusammen! (Da bin ich ein anscheinend ein Holzkopf)

Ich dachts circa so:

set loesch=2,3,4,5,1,1,1
for /F "skip=2 tokens=2-4 delims=," %%C in ('WMIC Path Win32_LocalTime Get DayOfWeek /Format:csv') do set loesch=%%C
for /F "tokens=%loesch% delims=," %%D in ("%daysofweek%") do set day=%%D
echo Es kann nun der Ordner %loesch% gelöscht werden
del %loesch%

Ich bin nur zu blöd um zu wissen ob das so funktionieren kann!
lg
Member: Grobmotoriker
Grobmotoriker Aug 03, 2013 updated at 11:22:36 (UTC)
Goto Top
Beitrag von "bastla"

eher meinte ich
set /a Loesch=daynumber+1

Was macht deine zweite Zeile eigentlich???
Ich käme ja dann am Sonntag auf die Variable 8 mit der ich nix anfange! Dafür würd ich nie 1 in der Variable stehen haben oder sehe ich das falsch?
Member: bastla
bastla Aug 03, 2013 updated at 11:29:49 (UTC)
Goto Top
Hallo Grobmotoriker!
eher meinte ich
Ließ sich aus
Also Bei Tag 1 (Montag) den Tag 7 als Löschvariable
nicht so ganz klar ableiten ...
Dafür würd ich nie 1 in der Variable stehen haben oder sehe ich das falsch?
Ja - hätte Dein Test ja eigentlich zeigen sollen ...

Grüße
bastla
Member: Grobmotoriker
Grobmotoriker Aug 03, 2013 at 11:29:46 (UTC)
Goto Top
Zitat von @Endoro:
Hallo,
wie wärs mit forfiles:
forfiles /p "start path" /m * /d -7 /c "cmd /c echo del @file"  
lg.

Habs mal gecheckt. Kannte ich gar nicht. kann ich den Befehl so benutzen, daß alles in einem Verzeichnissbaum, was älter als sagen wir 10 Tage ist zu löschen?????
Das wär ja relativ einfach und genial!

(Ich will solche Befehle nicht gleich "live" testen, da mir ansonsten WIEDER alle Daten abhanden kommen könnten. Entschuldigt also bitte meine vorsicht)
Member: Grobmotoriker
Grobmotoriker Aug 03, 2013 at 11:32:43 (UTC)
Goto Top
Zitat von @bastla:
Hallo Grobmotoriker!
> eher meinte ich
Ließ sich aus
> Also Bei Tag 1 (Montag) den Tag 7 als Löschvariable
nicht so ganz klar ableiten ...
> Dafür würd ich nie 1 in der Variable stehen haben oder sehe ich das falsch?
Ja - hätte Dein Test ja eigentlich zeigen sollen ...

Grüße
bastla

Sorry für meine Vorsicht. Ich will nicht alles gleich "live" testen, nur um zu sehen, ob dann zuviel gelöscht wird.
Kannst du mir verraten was es mit "gtr" auf sich hat?
Member: bastla
bastla Aug 03, 2013 at 11:37:01 (UTC)
Goto Top
Hallo Grobmotoriker!

Gegen Vorsicht ist ja auch nix einzuwenden, aber ein einfaches
echo %Loesch%
würde ja auch schon genügen, um das Ergebnis prüfen zu können ...
Kannst du mir verraten was es mit "gtr" auf sich hat?
if /?

Anstelle von "forfiles" böte sich übrigens auch DelAge32 an ...

Grüße
bastla
Member: Grobmotoriker
Grobmotoriker Aug 03, 2013 at 11:42:45 (UTC)
Goto Top
Zitat von @bastla:
Hallo Grobmotoriker!

Gegen Vorsicht ist ja auch nix einzuwenden, aber ein einfaches
echo %Loesch%
> 
würde ja auch schon genügen, um das Ergebnis prüfen zu können ...
> Kannst du mir verraten was es mit "gtr" auf sich hat?
if /?
> 

Anstelle von "forfiles" böte sich übrigens auch DelAge32 an ...

Grüße
bastla

Ich glaub jetzt hab ichs gecheckt! Größer als 7 wird wieder 7.
Ich gestehe die für mich möglicherweise beste Lösung ist der forfiles Befehl gewesen. Aber ich Danke dir auch für den Tipp mit DelAge32.
Member: bastla
bastla Aug 03, 2013 at 11:46:58 (UTC)
Goto Top
Hallo Grobmotoriker!
Ich glaub jetzt hab ichs gecheckt! Größer als 7 wird wieder 7.
Nö - es wird um 7 weniger, sodass wie gewünscht aus 8 dann 1 würde.

Grüße
bastla