Created
August 11, 2025 15:31
-
-
Save ILPlais/55d52f4bbb59e877f6199c714ae8f8ee to your computer and use it in GitHub Desktop.
VirtualBox VM Backup Batch
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| @ECHO OFF | |
| SETLOCAL ENABLEDELAYEDEXPANSION | |
| COLOR 02 | |
| TITLE VM Backup... | |
| ECHO ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» | |
| ECHO º Information retrieval... º | |
| ECHO ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ | |
| ECHO. | |
| REM VM name | |
| SET /P VMName=Please enter the name of the VM to be archived: | |
| ECHO. | |
| REM Shut down the computer after the backup | |
| SEt /P ShutWhenDone=Do you want to shut down the computer after the backup is complete? (Y/N) | |
| REM Constants | |
| SET VBoxManage="%ProgramFiles%\Oracle\VirtualBox\VBoxManage.exe" | |
| SET DestDir=%CD% | |
| REM Create destination directory if it does not exist | |
| IF NOT EXIST "%DestDir%" ( | |
| MD "%DestDir%" | |
| IF ERRORLEVEL 1 GOTO ERROR | |
| ) | |
| REM Retrieving VM information | |
| ECHO Retrieving VM information... | |
| %VBoxManage% showvminfo "%VMName%" --machinereadable|ENDDSTR /B /C:"name=">tmp.txt | |
| IF ERRORLEVEL 1 GOTO ERROR | |
| %VBoxManage% showvminfo "%VMName%" --machinereadable|ENDDSTR /B /C:"UUID=">>tmp.txt | |
| IF ERRORLEVEL 1 GOTO ERROR | |
| %VBoxManage% showvminfo "%VMName%" --machinereadable|ENDDSTR /B /C:"CfgFile=">>tmp.txt | |
| IF ERRORLEVEL 1 GOTO ERROR | |
| REM Storing information in local variables | |
| FOR /F "delims=" %%A IN (tmp.txt) DO SET TMP_%%A | |
| REM Remove quotation marks from the VM name | |
| FOR /F "useback tokens=*" %%a IN ('%TMP_name%') DO SET TMP_name=%%~a | |
| REM Remove quotation marks from the configuration path | |
| FOR /F "useback tokens=*" %%a IN ('%TMP_CfgFile%') DO SET TMP_CfgFile=%%~dpa | |
| DEL tmp.txt | |
| ECHO VM Name: %TMP_name% | |
| ECHO VM UUID: %TMP_UUID% | |
| ECHO VM Path: %TMP_CfgFile% | |
| ECHO. | |
| ECHO VM Backup Folder: %DestDir% | |
| ECHO. | |
| ECHO ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» | |
| ECHO º Starting VM backup... º | |
| ECHO ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ | |
| ECHO. | |
| TITLE Backup of VM %TMP_name% (%TMP_UUID%)... | |
| ECHO Backup of VM %TMP_name% (%TMP_UUID%)... | |
| %VBoxManage% export "%VMName%" --output="%DestDir%\%TMP_name%.ova" | |
| IF ERRORLEVEL 1 GOTO ERROR | |
| IF ERRORLEVEL 0 GOTO OK | |
| :ERROR | |
| TITLE Error | |
| COLOR 0C | |
| ECHO. | |
| ECHO ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» | |
| ECHO º An error occurred º | |
| ECHO ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ | |
| ECHO. | |
| GOTO END | |
| :OK | |
| TITLE Done | |
| COLOR 0A | |
| ECHO. | |
| ECHO ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» | |
| ECHO º Export done º | |
| ECHO ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ | |
| IF "%ShutWhenDone%" == "O" ( | |
| ECHO Start the computer shutdown in 5 minutes... | |
| SHUTDOWN /S /T 300 /C "Shutdown after the VM backup is complete." | |
| ) | |
| ECHO. | |
| GOTO END | |
| :END | |
| PAUSE | |
| IF EXIST tmp.txt DEL tmp.txt |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment