基于上面的“ .ps1”(Windows PowerShell脚本)示例,我编写了一个常规的“ .bat”脚本文件来更改VirtualBox虚拟机启动的时钟时间。
期望的开始时间以纪元格式设置在变量“ TEMPO_START_TIMESTAMP”上。您可以在“ http://www.timestampconvert.com/ ”上获得所需的等效开始时间。
变量“ NOME”(上面的“ .ps1”脚本中使用的名称相同)需要使用要启动的VirtualBox虚拟机的名称。
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%
您还需要使用epoh格式的当前时间,为此请使用以下脚本(另存为“ toEpoch.vbs”,此可视化基本脚本是从上面的“ .bat”脚本调用的):
WScript.Echo DateDiff("s", "01/01/1970 00:00:00", Now())
要运行虚拟机,只需执行上面的“ .bat”脚本文件。无需打开“ Oracle VM VirtualBox管理”界面。
我希望这有帮助。
问候