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.
"Heute code ich, morgen debug ich und übermorgen caste ich die Königin auf int!"
P.S. Ich leiste keinen Support per PN. Wer ein Problem hat, ab damit ins Forum!
Windows 10 - Windows Anleitungen
#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