WinFuture-Forum.de: .bat Script für VMWare Image - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

.bat Script für VMWare Image


#1 Mitglied ist offline   sandronesta 

  • Gruppe: Mitglieder
  • Beiträge: 10
  • Beigetreten: 29. Juni 15
  • Reputation: 0

geschrieben 29. Februar 2016 - 20:11

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
0

Anzeige



#2 Mitglied ist offline   RalphS 

  • Gruppe: VIP Mitglieder
  • Beiträge: 8.902
  • Beigetreten: 20. Juli 07
  • Reputation: 1.126
  • Geschlecht:Männlich
  • Wohnort:Zuhause
  • Interessen:Ja

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
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:$true
dran 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.
"If you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn."-- Anne Isabella Thackeray Ritchie

Eingefügtes Bild
Eingefügtes Bild
0

#3 Mitglied ist offline   sandronesta 

  • Gruppe: Mitglieder
  • Beiträge: 10
  • Beigetreten: 29. Juni 15
  • Reputation: 0

geschrieben 01. März 2016 - 05:57

Danke RalphS das PowerShell Script funktioniert hervorragend. Beim 7-Zip Commander habe ich noch einige Probleme

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
0

#4 Mitglied ist offline   evil.baschdi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.669
  • Beigetreten: 11. Februar 07
  • Reputation: 56
  • Geschlecht:unbekannt

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.
0

#5 Mitglied ist offline   sandronesta 

  • Gruppe: Mitglieder
  • Beiträge: 10
  • Beigetreten: 29. Juni 15
  • Reputation: 0

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.
0

#6 Mitglied ist offline   RalphS 

  • Gruppe: VIP Mitglieder
  • Beiträge: 8.902
  • Beigetreten: 20. Juli 07
  • Reputation: 1.126
  • Geschlecht:Männlich
  • Wohnort:Zuhause
  • Interessen:Ja

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
"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.
"If you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn."-- Anne Isabella Thackeray Ritchie

Eingefügtes Bild
Eingefügtes Bild
0

#7 Mitglied ist offline   sandronesta 

  • Gruppe: Mitglieder
  • Beiträge: 10
  • Beigetreten: 29. Juni 15
  • Reputation: 0

geschrieben 01. März 2016 - 22:31

Danke funktioniert wie gewünscht.
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0