Liebe Community,
ich habe ein VMWare Image, dass jeden Tag gesichert werden soll. Dieses Script funktioniert auch sehr gut.
"C:\Program Files (x86)\VMware\VMware Workstation\vmrun" suspend "C:\VMWare\2\Muster\Muster.vmx"
xcopy C:\VMWare\2\Zieger H:\VMSicherung\%date%\ /e /y /i
"C:\Program Files (x86)\VMware\VMware Workstation\vmrun" start "C:\VMWare\2\Muster\Muster.vmx"
Damit die externe Festplatte nicht übergeht, möchte ich, dass die Ordner die älter als sechs Tage sind gelöscht werden.
Also es gibt im Ordner H:\VMSicherung\ dann die Ordner 29.02.2016, 28.02.2016 (...) 23.02.2016. Leider schaffe ich es nicht, dass diese Ordner gelöscht werden.
Wie würde der entsprechende Befehl lauten?
Die jetztige Lösung funktioniert leider nicht
for /f "skip=6 delims=" %%i in ('dir /b /o-d /ad "H:\VMSicherung\??.??.20??"') do rmdir /s /q "%%i"
Eine weitere Frage habe ich noch für ein Script. Ich möchte einmal die Woche den Freitagsordner mittels 7-Zip packen und zwar in 600 MB Teile. Danach möchte ich diese gepackten Dateien in einen anderen Ordner verschieben. Wie würde dies funktionieren.
Herzlichen Dank!
LG - Nesta
Seite 1 von 1
.bat Script für VMWare Image
Anzeige
#2
geschrieben 29. Februar 2016 - 22:54
Forfiles mit Parameter /D -6 listet Verzeichniseinträge, die in den letzten 6 Tagen nicht verändert wurden; mit /M gibst Du eine Maske mit (zB *.vmdk) und mit /C einen Befehl, der für jeden dieser Verzeichniseinträge ausgeführt wird.
Näheres unter
- Was 7zip angeht, schaust Du am besten in die Hilfedatei (7-zip.chm) unter "Command Line Version"; da steht übersichtlich aufgelistet, welcher Schalter was tut. Der Schalter für MultiVolume ist -v.
Einfacher ginge es mit der Powershell; hier könntest Du einfach alle Verzeichniseinträge auflisten, welche vor mehr als $numDays Tagen erstellt worden sind:
Dahinter noch ein
Näheres unter
forfiles /? | more.
- Was 7zip angeht, schaust Du am besten in die Hilfedatei (7-zip.chm) unter "Command Line Version"; da steht übersichtlich aufgelistet, welcher Schalter was tut. Der Schalter für MultiVolume ist -v.
Einfacher ginge es mit der Powershell; hier könntest Du einfach alle Verzeichniseinträge auflisten, welche vor mehr als $numDays Tagen erstellt worden sind:
Get-ChildItem | Where-Object {$_.CreationTime -lt ((Get-Date).AddDays(-$numDays)) }
Dahinter noch ein
| Remove-Item -Recurse -WhatIf:$truedran und Du wirst informiert, was gelöscht werden *würde*; machst Du aus dem $true ein $false oder schmeißt das -WhatIf ganz weg, sagt er nix mehr, sondern löscht halt.
#3
geschrieben 01. März 2016 - 05:57
Danke RalphS das PowerShell Script funktioniert hervorragend. Beim 7-Zip Commander habe ich noch einige Probleme
Die .bat Datei ruft zuerst den 7-Zip Commander auf. Es soll im Ordner H:\transfer eine gepackte und auf 650 MB gesplittete Datei des Ordners H:\VMSicherung\&date%\ also mit dem aktuellen Datum erstellt werden. Diese .bat Datei wird mit Aufgabenplaner einmal in der Woche ausgeführt.
Funktioniert leider noch nicht so richtig.
LG - Nesta
C:\Program Files\7-Zip\7zG.exe a -7z H:\transfer @H:\VMSicherung\%date%\ -v650m
Die .bat Datei ruft zuerst den 7-Zip Commander auf. Es soll im Ordner H:\transfer eine gepackte und auf 650 MB gesplittete Datei des Ordners H:\VMSicherung\&date%\ also mit dem aktuellen Datum erstellt werden. Diese .bat Datei wird mit Aufgabenplaner einmal in der Woche ausgeführt.
Funktioniert leider noch nicht so richtig.
LG - Nesta
#4
geschrieben 01. März 2016 - 07:34
mit forfiles wäre ich vorsichtig, da dann auch dateien verloren gehen könnten, die zwar zur letzten sicherung gehören, aber dennoch seit zig jahren nicht angefasst wurden.
#5
geschrieben 01. März 2016 - 07:53
Danke, ich hab die Forfiles .bat Datei gegen das Powershell Script von RalphS getauscht. Jetzt fehlt mir nur noch die richtigen 7-Zip Commandos.
#6
geschrieben 01. März 2016 - 08:40
Sinngemäß braucht 7z (mit oder ohne g):
a <Archivname> (*)
-t <Archivtyp> (*)
-v <Volumegröße>
Datei(en) und/oder Verzeichnis(se) welche gepackt werden sollen
.
(*) - wenn der Archivtyp aus dem Archivnamen hervorgeht, kann man das -t weglassen. 7z a datei.7z und 7z a -t7z datei.7z tun dasselbe; 7z a -tzip datei.7z erstellt ein ZIP-Archiv mit "falscher" Erweiterung (und 7z a -tzip datei erstellt "datei" als Ziparchiv).
Das @ frißt eine Dateiliste und braucht daher eine Datei als Argument; diese wird ausgelesen und pro Zeile als ein Dateipfad interpretiert. Den ganzen Ordner ohne das @; wenn Du eine Datei mit den zu sichernden Dateinamen drin hast, mit dem @.
Zusammen also in etwa sowas wie
was Dir alle Dateien unter H:\VMSicherung\%date% ins Archiv H:\transfer.7z steckt und dieses Archiv in CD-große Häppchen stückelt.
a <Archivname> (*)
-t <Archivtyp> (*)
-v <Volumegröße>
Datei(en) und/oder Verzeichnis(se) welche gepackt werden sollen
.
(*) - wenn der Archivtyp aus dem Archivnamen hervorgeht, kann man das -t weglassen. 7z a datei.7z und 7z a -t7z datei.7z tun dasselbe; 7z a -tzip datei.7z erstellt ein ZIP-Archiv mit "falscher" Erweiterung (und 7z a -tzip datei erstellt "datei" als Ziparchiv).
Das @ frißt eine Dateiliste und braucht daher eine Datei als Argument; diese wird ausgelesen und pro Zeile als ein Dateipfad interpretiert. Den ganzen Ordner ohne das @; wenn Du eine Datei mit den zu sichernden Dateinamen drin hast, mit dem @.
Zusammen also in etwa sowas wie
"C:\Program Files\7-Zip\7z.exe" a "H:\transfer.7z" -v650m "H:\VMSicherung\%date%\"
was Dir alle Dateien unter H:\VMSicherung\%date% ins Archiv H:\transfer.7z steckt und dieses Archiv in CD-große Häppchen stückelt.
- ← Corel Website Creator
- Skript/Web-Programmierung
- Batch Programm um altuellen Ordner zu Substituieren →
Thema verteilen:
Seite 1 von 1