VMWare 确实是好东西,不过安装之后会增加四个自动启动的服务以及两个虚拟的网络连接。我是比较讨厌这种没事就占着系统资源的东西,何况也不是经常要用着 VMWare ,所以写了个批处理脚本来自动启动/关闭 VMWare 虚拟机以及相关的服务和网络连接。
完整批处理文件内容如下:
1 @echo On
2 @PROMPT [VMWareController]#
3
4 @if "%1" == "" goto Help
5 @if "%1" == "help" goto Help
6 @if "%1" == "/?" goto Help
7
8 @SET oprType=%1
9 @SET netOpr=%oprType%
10
11 @if "%oprType%" == "start" @SET netOpr=enable
12 @if "%oprType%" == "stop" @SET netOpr=disable
13
14 @SET vmxFile=%2
15 @Rem 如果没有提供第二个参数vmx full path,将尝试使用这里设定的缺省虚拟机
16 @Rem 根据需要把这个文件修改为实际希望启动的vmx文件
17 @if "%vmxFile%" == "" @SET vmxFile=D:\VMWare\Red Hat Enterprise Linux 3.vmx
18
19 @Rem VMWare的安装目录,根据需要进行修改
20 @SET vmwareFolder=E:\AppTool\VMWare
21
22 @Rem 把VMWare相关的四个服务设置为手动
23 sc config VMAuthdService start= demand
24 sc config VMnetDHCP start= demand
25 sc config "VMware NAT Service" start= demand
26 sc config vmount2 start= demand
27
28 @Rem 启动/停止VMWare相关的四个服务
29 net %oprType% "VMware Authorization Service"
30 net %oprType% "VMware DHCP Service"
31 net %oprType% "VMware NAT Service"
32 net %oprType% "VMware Virtual Mount Manager Extended"
33
34 @Rem 这里使用通配符来停用/启用所有vmnet相关的网络连接
35 devcon %netOpr% *vmnet*
36
37 @Rem 使用vmrun来运行指定的虚拟机
38 "%vmwareFolder%\vmrun" %oprType% "%vmxFile%"
39
40 @goto EndMission
41
42 :Help
43 @echo 自动启动/停止指定的 VMWare 虚拟机以及相关的服务和网络连接
44 @echo 需要 devcon 工具来控制网络连接。工具下载地址:
45 @echo http://support.microsoft.com/kb/311272/zh-cn
46 @echo 命令行参数:
47 @echo %0 [start^|stop] ^
48 @echo ^为缺省启动的虚拟机配置文件
49 @pause
50 goto EndMission
51
52 :EndMission
view plain | print | copy to clipboard | ?
@echo On
@PROMPT [VMWareController]#
@if "%1" == "" goto Help
@if "%1" == "help" goto Help
@if "%1" == "/?" goto Help
@SET oprType=%1
@SET netOpr=%oprType%
@if "%oprType%" == "start" @SET netOpr=enable
@if "%oprType%" == "stop" @SET netOpr=disable
@SET vmxFile=%2
@Rem 如果没有提供第二个参数vmx full path,将尝试使用这里设定的缺省虚拟机
@Rem 根据需要把这个文件修改为实际希望启动的vmx文件
@if "%vmxFile%" == "" @SET vmxFile=D:\VMWare\Red Hat Enterprise Linux 3.vmx
@Rem VMWare的安装目录,根据需要进行修改
@SET vmwareFolder=E:\AppTool\VMWare
@Rem 把VMWare相关的四个服务设置为手动
sc config VMAuthdService start= demand
sc config VMnetDHCP start= demand
sc config "VMware NAT Service" start= demand
sc config vmount2 start= demand
@Rem 启动/停止VMWare相关的四个服务
net %oprType% "VMware Authorization Service"
net %oprType% "VMware DHCP Service"
net %oprType% "VMware NAT Service"
net %oprType% "VMware Virtual Mount Manager Extended"
@Rem 这里使用通配符来停用/启用所有vmnet相关的网络连接
devcon %netOpr% *vmnet*
@Rem 使用vmrun来运行指定的虚拟机
"%vmwareFolder%\vmrun" %oprType% "%vmxFile%"
@goto EndMission
:Help
@echo 自动启动/停止指定的 VMWare 虚拟机以及相关的服务和网络连接
@echo 需要 devcon 工具来控制网络连接。工具下载地址:
@echo http://support.microsoft.com/kb/311272/zh-cn
@echo 命令行参数:
@echo %0 [start^|stop] ^
@echo ^为缺省启动的虚拟机配置文件
@pause
goto EndMission
:EndMission
把以上代码保存为 .bat 文件,并创建两个指向该 .bat 文件的快捷方式,并分别给两个快捷方式加上 start / stop 参数(也可以再提供第二个参数来指定启动特定的虚拟机配置文件),就可以通过快捷方式直接启动/停止 VMWare 相关的虚拟机和服务。
其中使用了 devcon 工具来控制网络连接的停用/启用,需要到微软网站下载该工具。
注意:如果你的系统中存在其他硬件ID包含 *vmnet* 字符串的话会把所有相关的设备同时都禁用/启用。你可以在命令行下输入 devcon find *vmnet* 先检查一下是否只匹配到 VMWare 所添加的两个虚拟网络连接。
用 vmrun 关闭虚拟机的时候作用等同于在操作界面的 Power Off 按钮。所以最好在执行批处理之前使用虚拟操作系统的 shutdown 命令先安全退出操作系统。