Dựa trên ví dụ ".ps1" (tập lệnh Windows PowerShell) ở trên, tôi đã viết tệp tập lệnh ".bat" thông thường để thay đổi thời gian đồng hồ khởi động máy ảo của VirtualBox.
Thời gian bắt đầu mong muốn được đặt ở biến "TEMPO_START_TIMESTAMP" ở định dạng epoch. Bạn có thể có được thời gian bắt đầu epoh mong muốn tương đương tại " http://www.timestampconvert.com/ ".
Tên của máy ảo VirtualBox sẽ được khởi động là cần thiết trong biến "NOME" (cùng một kiểu chữ được sử dụng trong tập lệnh ".ps1" ở trên).
echo off
echo %time%
set NOME="Windows_7_x64"
set TEMPO_CS_2_MS=0
set TEMPO_S_2_MS=000
rem # Starts the VM always on the date 07/11/2014 - 11h58
rem http://www.timestampconvert.com/
set TEMPO_START_TIMESTAMP=1415361480
for /f "delims=" %%x in ('cscript /nologo toEpoch.vbs') do set epoch=%%x
rem %epoch%
set TEMPO_CURRENT_TIMESTAMP=%epoch%
rem set TEMPO_CURRENT_TIMESTAMP=1544518714
set /A TEMPO_TEMP=(%TEMPO_START_TIMESTAMP%-%TEMPO_CURRENT_TIMESTAMP%)
call set TEMPO=%TEMPO_TEMP%%TEMPO_S_2_MS%
rem %TEMPO_TEMP%
rem %TEMPO%
c:\Progra~1\Oracle\VirtualBox\VBoxManage setextradata %NOME% "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1
c:\Progra~1\Oracle\VirtualBox\VBoxManage modifyvm %NOME% --biossystemtimeoffset %TEMPO%
c:\Progra~1\Oracle\VirtualBox\VBoxManage startvm %NOME%
Bạn cũng sẽ cần thời gian hiện tại ở định dạng epoh, vì điều này sử dụng tập lệnh sau (lưu dưới dạng "toEpoch.vbs", tập lệnh cơ bản trực quan này được gọi từ tập lệnh ".bat" ở trên):
WScript.Echo DateDiff("s", "01/01/1970 00:00:00", Now())
Để chạy máy ảo, chỉ cần thực hiện tệp tập lệnh ".bat" ở trên. Không cần mở giao diện "Quản trị Oracle VM VirtualBox".
Tôi hi vọng cái này giúp được.
Trân trọng