@Echo off setlocal enabledelayedexpansion set VBox="C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" set includedatei=c:\Backup\vboxinclude.inc set Backuppfad=e:\Sicherung\Virtual Box set status=halted rem Backuppfad überprüfen if not exist "%Backuppfad%" ( echo Der Backuppfad ist ungueltig. Sicherung wird beendet. goto :ENDE ) rem Includedatei überprüfen if not exist "%includedatei%" ( echo Die Includedatei ist nicht vorhanden. Sicherung wird beendet. goto :ENDE ) rem VBox-Pfad überprüfen if not exist %VBox% ( echo VBox-Pfad ist ungueltig. Sicherung wird beendet. goto :ENDE ) rem ggf. Backupordner anlegen if not exist "%Backuppfad%\aktuell" md "%Backuppfad%\aktuell" if not exist "%Backuppfad%\letzte" md "%Backuppfad%\letzte" rem alte Sicherungen verschieben call del /Q "%Backuppfad%\letzte\*.*" > nul call move "%Backuppfad%\aktuell\*.*" "%Backuppfad%\letzte" > nul echo. rem Includedatei auslesen und sichern FOR /f "delims=*" %%i in (%includedatei%) do ( rem Abfrage, ob die Maschine läuft call %VBox% showvminfo "%%i" > c:\status.txt find "State: running" c:\status.txt > nul && echo dummy > c:\status2.txt rem ggf. Maschine anhalten if exist c:\status2.txt ( echo Die Maschine "%%i" wird angehalten... call %VBox% controlvm "%%i" savestate call del /Q c:\status2.txt set status=running ) echo. rem Sicherung der Maschine echo Backup von "%%i" wird gestartet... echo. call %VBox% export "%%i" -o "%Backuppfad%\aktuell\%%i.ovf" echo. echo Backup von "%%i" abgeschlossen. echo. rem Maschine wieder starten, falls sie vorher gestartet war if !status! == running ( echo Die Maschine "%%i" wird gestartet... call %VBox% startvm "%%i" echo. set status=halted ) ) call del /Q c:\status.txt :ENDE pause endlocal