我想启动或恢复虚拟机,并且一旦我可以控制鼠标将其置于暂停模式(host + p)。
这样,我可以启动虚拟机和其他任务,但没有虚拟机消耗系统资源,但是我可以通过取消暂停来随意使用该虚拟机。与使用Firefox一样,将其启动到内存中,以便在需要时可用。
我正在使用Windows。
Oracle VirtualBox可以完全通过命令行进行管理,因此可以编写一个执行此操作的脚本。
例如Start VM.cmd
,创建一个批处理文件,并将以下内容放入其中:
@echo off
cd /d "C:\Program Files\Oracle\VirtualBox"
start "" VirtualBox.exe --startvm "Virtual Machine 1"
set var=""
echo Waiting for the virtualbox to complete its startup routine.
:loop
for /f "delims=" %%A in ('vboxmanage list runningvms') do set "var=%%A"
set var2=%var:"=%
if "%var2%"=="Virtual Machine 1 {d325eda7-8abc-4083-9bc5-d41b3acf0ba5}" goto next
goto loop
:next
VBoxManage controlvm "Virtual Machine 1" pause
将第二行更改为您安装VirtualBox的路径。此外,还要更改虚拟机的名称和guid,以使其与脚本中各个位置的虚拟机相匹配。
您可以通过打开命令提示符并键入以下命令来执行此操作:
C:\Program Files\Oracle\VirtualBox\vboxmanage list vms
复制整个行并将其粘贴到批处理文件中,然后从虚拟机名称中删除引号(“)。
例如,"Virtual Machine 1" {d325eda7-8abc-4083-9bc5-d41b3acf0ba5}
变为Virtual Machine 1 {d325eda7-8abc-4083-9bc5-d41b3acf0ba5}
我在此脚本中做了几件事,并且我将解释这些陷阱以及为什么要这样做。
我使用start启动虚拟机,以确保在启动VM时脚本继续运行。如果没有,脚本将等待VM终止,然后再继续。
下一步Iset var=""
如果您通过双击资源管理器中的图标来启动脚本,从技术上讲这不是必需的,但是如果您使用命令提示符并多次运行它,则它将仅在第一次运行。
接下来,我创建一个循环。在循环中,我查询正在运行的VM。如果我感兴趣的VM确实正在运行,我们将打破循环。现在,我必须在这里执行一个技巧才能完成这项工作。由于vm返回的内容中包含一个“,因此它会认为”早先在if语句中出现,并导致脚本无法正常工作。为了解决这个问题,我从%var%中删除了所有“并将其存储为var2。这是必需的,因为如果没有虚拟机在运行,%var%不会更新。我会使用set var=%var:"=%
它一次,然后在下一个循环中断时使用脚本,并以错误终止。
最终,在VM运行之后,它会进行完全匹配并中断循环。然后,将pause命令发送到VM,它将尽快暂停VM。它不是即时的,但是延迟是最小的,并且鉴于运行vms的vboxmanage列表返回它,系统知道它将接受该命令。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句