Este script sirve para auto-instalar una máquina virtual en
VirtualBox, Sin necesidad de abrir el programa y darle al botón de "
Máquina > Agregar".
La idea del script es automatizar la tarea de instalar una máquina clonada, en otros equipos (Por ejemplo).
Instrucciones:
1º - Hacer un backup de una máquina virtual o Clonar una máquina virtual en una carpeta.
2º - Meter este script en la carpeta junto a los archivos de la máquina clonada (
máquina.vbox,
disco.vhd,
script.bat , etc...)
3º - Ejecutar el script.
PD: Cada vez hago scripts más raros :xD
EDITO:
Bug corregidoNueva versión
Title VBOX VirtualMachine Installer by Elektro H
@cker v0.3
REM Testeado con la versión 4.1.18 de VirtualBox
Color 07
Echo: VBOX VirtualMachine Installer by Elektro H
@cker
Echo: _____________________________ _________________
| MORE
:: Comprueba si existe VirtualBOX en el sistema.
REG Query "HKEY_CURRENT_USER\Software\Oracle\VirtualBox\Install"
| Find /I "installed"
>NUL 2
>&1
|| ( Echo La operaci¢n se ha cancelado porque VirtualBox no est… instalado en este PC.
| MORE
)
:: Comprueba si existe el archivo de configuración de VirtualBox, De lo contrario, Crea el archivo por defecto.
If Not Exist "
%USERPROFILE%\.VirtualBox\VirtualBox.xml"
( (
Echo ^<?xml version="1.0"?
^> Echo **
If you make changes to this file while any VirtualBox related application
Echo ** is running, your changes will be overwritten later, without taking effect.
Echo ** Use VBoxManage or the VirtualBox Manager GUI to make changes.
Echo ^<VirtualBox xmlns="http://www.innotek.de/VirtualBox-settings" version="1.12-windows"
^> Echo ^<ExtraDataItem name="GUI/DetailsPageBoxes" value="general,system,preview,display,storage,audio,network,usb,sharedFolders,description"/
^> Echo ^<ExtraDataItem name="GUI/LastWindowPosition" value="575,245,770,550"/
^> Echo ^<ExtraDataItem name="GUI/SplitterSizes" value="302,463"/
^> Echo ^<ExtraDataItem name="GUI/UpdateCheckCount" value="2"/
^> Echo ^<ExtraDataItem name="GUI/UpdateDate" value="1 d, 2012-08-17, stable, 4.1.18"/
^> Echo ^<MachineRegistry/
^> Echo ^<NetserviceRegistry
^> Echo ^<DHCPServer networkName="HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter" IPAddress="192.168.56.100" networkMask="255.255.255.0" lowerIP="192.168.56.101" upperIP="192.168.56.254" enabled="1"/
^> Echo ^</NetserviceRegistry
^> Echo ^<SystemProperties defaultMachineFolder="C:\Users\Administrador\VirtualBox VMs" defaultHardDiskFormat="VDI" VRDEAuthLibrary="VBoxAuth" webServiceAuthLibrary="VBoxAuth" LogHistoryCount="3"/
^> Echo ^<USBDeviceFilters/
^> ) > "%USERPROFILE%\.VirtualBox\VirtualBox.xml"
)
:: Elimina el archivo temporal (Si existiera).
Del /Q "
%userprofile%\.VirtualBox\virtualbox.xml.tmp" 2
>NUL
:: Obtiene el nombre de la máquina virtual.
Call Echo M…quina virtual encontrada: "
%%NAME%%"
| MORE
:: Obtiene el Machine UUID de la máquina virtual.
For /F "Tokens=2 Delims={}"
%%A in ('Type "
%%@"
^| Find /I "Machine uuid"'
) Do (Set "Machine_UUID={
%%A}"
)
:: Obtiene el HardDisk UUID de la máquina virtual.
For /F "Tokens=2 Delims={}"
%%A in ('Type "
%%@"
^| Find /I "HardDisk uuid"'
) Do (Set "HardDisk_UUID={
%%A}"
)
:: Obtiene el formato del disco duro virtual.
For /F "Tokens=4 Delims=="
%%A in ('Type "
%%@"
^| Find /I "HardDisk uuid="'
) Do (Set "DISK=
%%A"
)) )
:: Obtiene el directorio por defecto de las máquinas virtuales de VBOX.
For /F tokens
^=2
^ delims
^=^" %%A in ('Type
^"%USERPROFILE%\.VirtualBox\VirtualBox.xml
^" ^| Find /I
^"defaultMachineFolder
^"'
) Do (Set "FOLDER=
%%A"
) & REM "
:: Comprueba si esta máquina ya está instalada.
Type "
%userprofile%\.VirtualBox\virtualbox.xml"
| find "
%Machine_UUID%"
>NUL 2
>&1
Echo La m…quina virtual "
%NAME%" ya existe.
| MORE
Choice /M "¨Desea reemplazar la m…quina virtual?"
Echo La operaci¢n se ha cancelado.
)
:: Copia la máquina virtual al directorio de destino.
Echo Copiando los archivos de la m…quina virtual "
%NAME%"...
| MORE
For /R
%%@ in (*.
%DISK%) DO (Echo Copiando
%%~nx
@ | MORE
& copy "
%%@" "
%FOLDER%\
%NAME%\"
>NUL)
:: Comprueba si esta será la primera máquina virtual que instalaremos, O ya existen más máquinas virtuales instaladas en VirtualBox.
type "
%userprofile%\.VirtualBox\virtualbox.xml"
| find "
<MachineRegistry
>"
>NUL 2
>&1
&& ( For /F "tokens=1 delims=:"
%%X in ('type "
%userprofile%\.VirtualBox\virtualbox.xml"
^| findstr /N "
<MachineRegistry
>"'
) Do (Set Line=
%%X) ) || (
For /F "tokens=1 delims=:"
%%X in ('type "
%userprofile%\.VirtualBox\virtualbox.xml"
^| findstr /N "
<MachineRegistry/
>"'
) Do (Set Line=
%%X) )
:: Modifica el archivo de configuración de VirtualBox agregando las lineas necesarias.
For /F "tokens=*"
%%#
in ('type "
%userprofile%\.VirtualBox\virtualbox.xml"'
) Do ( Echo %%#
>> "
%userprofile%\.VirtualBox\virtualbox.xml.tmp"
)
:Next
IF "
%NEXT%"
EQU "
%LINE%"
( IF "
%FirstMachine%"
EQU "NO"
( Echo ^<MachineEntry uuid="
%Machine_UUID%" src="
%FOLDER%\
%NAME%\
%NAME%.vbox"/
^> >> "
%userprofile%\.VirtualBox\virtualbox.xml.tmp"
Type "%userprofile%\.VirtualBox\virtualbox.xml" | MORE +%LINE% >> "%userprofile%\.VirtualBox\virtualbox.xml.tmp"
Echo ^<MachineRegistry
^> >> "
%userprofile%\.VirtualBox\virtualbox.xml.tmp"
Echo ^<MachineEntry uuid="
%Machine_UUID%" src="
%FOLDER%\
%NAME%\
%NAME%.vbox"/
^> >> "
%userprofile%\.VirtualBox\virtualbox.xml.tmp"
Echo ^</MachineRegistry
^> >> "
%userprofile%\.VirtualBox\virtualbox.xml.tmp"
Type "%userprofile%\.VirtualBox\virtualbox.xml" | MORE +%LASTLINE% >> "%userprofile%\.VirtualBox\virtualbox.xml.tmp"
)
Move /Y "
%userprofile%\.VirtualBox\virtualbox.xml.tmp" "
%userprofile%\.VirtualBox\virtualbox.xml"
>NUL )
:FIN
Echo La m…quina virtual "
%NAME%" se ha instalado satisfact¢riamente.
Me lo añado a marcadores puede serme muy útil en el futuro. Gracias :)
Esta muy Bueno el Código, Gracias ;-). voy a estudiarlo a fondo.