jack.x
Goto Top

Batchdatei soll Datum minus 7 Tage errechnen um ein Verzeichnis zu löschen

Hi,
ich erstelle täglich einen Backup meiner Thunderbird Mailfile und speichere diesen in einem Verzeichnis mit dem aktuellen Datum. So far so good - das funktioniert.
Jetzt möchte ich am liebsten in der gleichen Batchdatei das Verzeichnis mit dem Datum von vor 7 Tagen automatisch löschen.

Kann ich in einer Batchdatei das Datum von letzter Woche errechnen?

Gruß Jack.X

Content-Key: 3831465403

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

Printed on: May 16, 2024 at 10:05 o'clock

Member: jsysde
jsysde Sep 03, 2022 at 14:10:01 (UTC)
Goto Top
Servus.

Zitat von @jack.x:
[...]Kann ich in einer Batchdatei das Datum von letzter Woche errechnen?
Ja. Siehe z.B. hier: https://www.krakovic.de/windowsbatchdos-aktuelles-datum-uhrzeit-fuer-dat ...

Cheers,
jsysde
Member: jack.x
jack.x Sep 03, 2022 updated at 14:33:08 (UTC)
Goto Top
Hi, danke.
Das Erstellen des Verzeichnises mit %DATE% ist nicht das Problem. Das funktioniert.
Problem ist das Datum von vor 7 Tagen zu errechnen um das Verzeichnis von letzter Woche zu löschen. So etwas wie %DATE-7% wäre schön.

Ich habe jetzt eine praktikable Lösung in dem ich das Verzeichnis nach dem Wochentag benenne.

for /f %%g in ('wmic path win32_localtime get dayofweek^|findstr /v /r "^$"') do (
set DOW=%%g)

if %DOW%==0 set DOW=Sonntag
if %DOW%==1 set DOW=Montag
if %DOW%==2 set DOW=Dienstag
if %DOW%==3 set DOW=Mitwoch
if %DOW%==4 set DOW=Donnerstag
if %DOW%==5 set DOW=Freitag
if %DOW%==6 set DOW=Samstag

Nach 7 Tagen wird der entsprechende Tag dann automatisch überschrieben.

Mit dem aktuellen Datum als Verzeichnis wäre das aber schon übersichtlicher und professioneller.
Member: Drohnald
Solution Drohnald Sep 03, 2022 at 15:25:56 (UTC)
Goto Top
Hi,

ich würde nicht den Tag errechnen und löschen sondern die neuesten 7 Ordner behalten und alles andere löschen.
So in etwa:
cd /d c:\temp\test
for /f "skip=7 eol=: delims=" %%F in ('dir /b /o-d') do @rmdir "%%F""  

Damit hast du immer 7 Versionen, auch wenn z.B. das Backup mal fehlschlägt.
Member: em-pie
em-pie Sep 03, 2022 at 15:39:31 (UTC)
Goto Top
Moin,

Wäre eine Umstellung auf die Powershell denkbar?

Hier kannst besser/ leichter mit Daten arbeiten.


Fernab der Hinweis: wenn du immer auf Badis der Tage alte Sachen löscht, hast du nach 7 Tagen ohne funktionierendes Backup das Problem, dass du kein Backup mehr hast. Gehe auf Versionen.
Kann man mit der Powershell auch gut lösen.

Gruß
em-pie
Member: jsysde
jsysde Sep 03, 2022 at 15:57:48 (UTC)
Goto Top
N'Abend.

Da hat @em-pie völlig Recht. +1 für PowerShell. face-wink

Cheers,
jsysde
Mitglied: 3803037559
Solution 3803037559 Sep 03, 2022 updated at 16:44:15 (UTC)
Goto Top
Moin.
@echo off
forfiles /P "G:\Backups" /D -7 /C "cmd /c if @isdir == TRUE rd /s /q @path"  
oder mit etwas Powershell-Hilfe
@echo off
powershell -EP Bypass -C "Get-ChildItem 'G:\backups' -Directory | ?{$_.CreationTime.Date -lt (get-date).AddDays(-7).Date} | Remove-Item -Recurse -Force -Verbose"  
Cheers
certguy
Member: jack.x
jack.x Sep 03, 2022 at 17:07:27 (UTC)
Goto Top
Hi, vielen Dank an alle.
Da habe ich jetzt erst mal einiges zum ausprobieren. Die Sache mit den 7 neusten Verzeichnissen gefällt mir tendenziell am besten. Ein guter Punkt, wenn der Backup aus welchen Gründen auch immer fehlschlägt, merkt man es u.U. erst wenn es zu spät ist.
Jack.X
Member: jsysde
jsysde Sep 04, 2022 at 09:51:10 (UTC)
Goto Top
Moin.

Zitat von @jack.x:
[...]wenn der Backup aus welchen Gründen auch immer fehlschlägt, merkt man es u.U. erst wenn es zu spät ist.
Dafür gibt es Monitoring-Systeme. Im einfachsten Fall kontrolliert man das täglich selbst. Oder richtet eine E-Mail-Benachrichtigung ein. Oder lässt sich ne Info an seinen präferierten Messenger schicken.

Cheers,
jsysde
Member: Doskias
Doskias Sep 05, 2022 at 06:37:06 (UTC)
Goto Top
Moin

Zitat von @jsysde:
Zitat von @jack.x:
[...]wenn der Backup aus welchen Gründen auch immer fehlschlägt, merkt man es u.U. erst wenn es zu spät ist.
Dafür gibt es Monitoring-Systeme. Im einfachsten Fall kontrolliert man das täglich selbst. Oder richtet eine E-Mail-Benachrichtigung ein. Oder lässt sich ne Info an seinen präferierten Messenger schicken.
Cheers,
jsysde

Und Monitoring-Lösungen sind sogar flexibler. Anstatt immer einfach die Ordner zu löschen, die älter als 7 Tage sind und es dann zu merken, wenn es zu spät ist, können Monitoring-Lösungen das Skript auch erst bei erfolgreichem Backup ausführen. Sprich: Schlägt das Backup fehl, dann hast du immer noch die letzten 7 Ordner. Ignorierst du das ganze dann 14 Tage (zum Beispiel wg. Urlaub, Krankheit, Faulheit, etc.), dann hast du zwar immer noch kein aktuelles Backup, aber immer noch die letzten 7 Ordner.

Alternativ dazu: Das PS-Skript erweitern, dass die jüngsten 7 Ordner im get-childitem ignoriert werden. Dann behältst du auch immer 7 Ordner und stehst nicht mit leeren Händen da.

Gruß
Doskias
Member: DerMaddin
DerMaddin Sep 05, 2022 at 08:53:59 (UTC)
Goto Top
Warum macht ihr euch das so kompliziert, wenn es schon ein fertiges Produkt gibt?

Delage32

Ist zwar schon recht alt, aber es klappt wunderbar.
Member: Doskias
Doskias Sep 05, 2022 at 09:03:22 (UTC)
Goto Top
Moin
Zitat von @DerMaddin:
Warum macht ihr euch das so kompliziert, wenn es schon ein fertiges Produkt gibt?
Delage32
Ist zwar schon recht alt, aber es klappt wunderbar.

Weil man das Produkt nicht kennt (wie in meinem Fall). Und selbst wenn ich es gekannt hätte: Warum soll ich mir ein Programm / Tool installieren, wenn ich es mit Boardmitteln machen kann? Jedes zusätzliche Programm bringt potentielle Lücken mit sich und muss (je nach Umgebung) zum Einsatz das eine oder andere Genehmigungsverfahren durchlaufen. Entwickele ich die Lösung aber mit Boardmitteln, dann kann man solche langwierige Genehmigungsverfahren umgehen und ist schneller am Ziel.

Also um deine Eingangsfrage zu beantworten:
Warum macht ihr euch das so kompliziert, wenn es schon ein fertiges Produkt gibt?
- Weil man das Produkt nicht kennt
- Weil man Angst hat der Entwickler könnte was böses versteckt haben
- Weil Genehmigungsverfahren einen schnellen Einsatz verhindern
- Weil auf den Geräten so wenig Fremdsoftware wie möglich verwendet werden soll
- ...

Gruß
Doskias
Member: DerMaddin
DerMaddin Sep 05, 2022 at 10:19:23 (UTC)
Goto Top
Zitat von @Doskias:

- Weil man das Produkt nicht kennt
- Weil man Angst hat der Entwickler könnte was böses versteckt haben
- Weil Genehmigungsverfahren einen schnellen Einsatz verhindern
- Weil auf den Geräten so wenig Fremdsoftware wie möglich verwendet werden soll
- ...

Na aber klar doch, man kann sich das ITler-Leben schwer machen und Paranoia entwickeln. Also alles was nicht Bestandteil eines OS ist, ist erst Mal "böse" und muss geprüft und genehmigt werden bei euch? Auch so etwas banales wie die PsTools z.B.? Ist ja auch nicht von MS direkt und war lange zeit ein eigenes Produkt.
Member: Drohnald
Drohnald Sep 05, 2022 updated at 10:42:40 (UTC)
Goto Top
Also alles was nicht Bestandteil eines OS ist, ist erst Mal "böse" und muss geprüft und genehmigt werden bei euch? Auch so etwas banales wie die PsTools z.B.? Ist ja auch nicht von MS direkt und war lange zeit ein eigenes Produkt.

Na klar. In den meisten, nicht ganz winzigen, Firmen wird NICHTS verwendet, was nicht explizit durch die IT-Security freigegeben wurde. Wenn die IT-Abteilung nur eine Person ist, dann muss diese Person das verantworten, aber sicherlich auch prüfen.

Ich installiere kein Tool bei Usern, was nicht vorher geprüft wurde, mindestens ob man es überhaupt kommerziell verwenden darf. Schon alleine weil man sich bei jedem Extratool auch noch um Updates usw. kümmern muss.

Große Firma = Möglichst homogenes System, weil der Verwaltungsaufwand sonst zu groß wird.
Member: Doskias
Doskias Sep 05, 2022 at 10:55:48 (UTC)
Goto Top
Wie gesagt: Ich kannte das von dir genannte Tool nicht und ganz ehrlich: Wir reden hier in diesem Fall, über einen Einzeiler, der jetzt nicht so schwer zu verstehen und zu entwickeln ist. Das was ich aufgelistet habe, waren nur Beispiele, die mir persönlich spontan eingefallen sind.

Na aber klar doch, man kann sich das ITler-Leben schwer machen und Paranoia entwickeln. Also alles was nicht Bestandteil eines OS ist, ist erst Mal "böse" und muss geprüft und genehmigt werden bei euch?
Nicht ganz. Aber alles was nicht Bestandteil eines OS ist, wird sich erstmal genau angeschaut. Ich hoffe das machst du auch, oder lädst du einfach jedes Programm/Skript einfach so runter? Das hat nichts mit Paranoia zu tun, sondern ist ein integraler Bestandteil eines Sicherheitskonzept. Grade als Admin sollte man nicht alles einfach so runterladen.

Auch so etwas banales wie die PsTools z.B.? Ist ja auch nicht von MS direkt und war lange zeit ein eigenes Produkt.
Ja auch so etwas banales wie die PSTools werden bzw. wurden bei uns einmal geprüft. Vor allem, weil der Virenscanner PSExec als kritisch angesehen hat und blockierte. Aus sich des Virenscanners völlig in Ordnung, immerhin handelt es sich dabei um ein Programm was im Hintergrund andere Prozesse startet und es wurde schon für die Verbreitung von Viren genutzt. Es wird dennoch nicht blind einfach auf allen Geräten bei uns ausgerollt.

Ich kenne darüber hinaus einige Firmen (Systemhäuser, Rechenzentren, etc.), die feste Vorgaben haben, was auf einem Server drauf zu sein hat. die PStools gehören dort nicht dazu und jedesmal, wenn sie zur Verfügung gestellt werden sollen, muss ein Änderungsantrag gestellt werden, der dann genehmigt werden muss. Sicher, wenn man das Tool einmalig benötigt, dann wäre das sicher kein Problem, aber wir reden hier von einer dauerhaften Lösung. Und ganz ehrlich: Auf den Antragskram delage32 (oder 64) auf den Server zu packen, wenn es sich mit einem Einzeiler lösen lässt, hätte ich keine Lust face-smile

Gruß
Doskias
Member: DerMaddin
DerMaddin Sep 05, 2022 at 11:54:26 (UTC)
Goto Top
Ich arbeite in der IT schon ein paar Tage, daher sind mir viele "Helferlein-Tools" bekannt und bedarf keiner extra Prüfung durch mich oder andere. Meine Erfahrung und Expertise reichen aus, um zu bewerten, ob etwas in der IT (hier explizit nur IT-Abteilung) eingesetzt werden kann oder nicht.

Solche Freigabe-Prozesse sind mir aber auch bekannt aber in der Regel wird dass schnell in der IT entschieden, es sei denn es ist eine kommerzielle Lizenz nötig.

Und ja, es gibt auch ITler, wie mich, die keine Skript-Gurus sind und nicht dann tage- und wochenlang nach Lösungen mit Batch, PowerShell etc. suchen möchten.

Regeln und Richtlinien können nicht nur gut sein sondern auch unnötig etwas in die Länge ziehen, teuer oder auch unmöglich machen face-wink

@Drohnald: von einem Tool für alle User war hier keine Rede
Member: jack.x
Solution jack.x Sep 06, 2022 at 08:55:22 (UTC)
Goto Top
Moin, ich wollte jetzt hier keine Grundsatz Diskussion lostreten. Es ging mir hier um eine winzige Automatisierung für mein one man business. Ich will mir dafür keine mächtigen Tools installieren, das wäre in meinem Fall mit Kanonen auf Spatzen geschossen.

Folgende Lösung funktioniert bei mir perfekt:

forfiles /P "D:\$user\Backup" /D -3 /C "cmd /c if @isdir == TRUE rd /s /q @path"

set Ordnername=D:\$user\Backup\%DATE:~-4%-%DATE:~-7,2%-%DATE:~-10,2%\Thunderbird\Mailfile%DATE:~-4%-%DATE:~-7,2%-%DATE:~-10,2%

mkdir %Ordnername%

robocopy ...

Der Backup läuft einmal täglich, gesteuert über Windows 'Aufgabenplanung' oder 'Task Scheduler'. Damit habe ich jetzt immer die 7 letzten Versionen der Datei. Mehr wollte ich nicht und mehr brauche ich auch nicht. Keep it simple !

Besten Dank an certguy und allen anderen die zur Lösung beigetragen haben.
Jack.X