设为首页 收藏本站
查看: 1407|回复: 0

[经验分享] 虚拟机启动的一个Bat文件(启动虚拟机.bat)

[复制链接]

尚未签到

发表于 2015-4-9 20:23:11 | 显示全部楼层 |阅读模式
  // 从(http://www.xdowns.com/soft/6/56/2010/Soft_64236.html)下载的绿色虚拟机,不过貌似服务总是安装不全,所以自己做了个启动文件,倘若有未安装服务则立即安装上,同时实现服务在不用时自动停止功能.
  @Rem *****************************
@Rem 1.首先实现的是窗口隐藏.
@Rem 2.接下来是服务的启动,同时倘若服务并没有安装则进行安装(因为发现好多的Install.bat中并不能真正把所需服务安装上,所以就把虚拟机启动.bat的功能稍微强化一下了).
@Rem 3.启动VMware.exe之后,cmd隐藏于后台等待,并且以10秒一次进行进程状态的检测,当检测到了进程结束之后,便执行服务关闭操作,同时将服务状态进行设置(这也是因为Install.bat中安装时不设置服务启动类型,所以把虚拟机启动.bat的功能稍微强化一下).
@Rem *.当虚拟机进入后台运行Vmware.exe关闭之后cmd仍然会继续等待,直到vmware.exe和vmware-vmx.exe同时处于结束状态.
@Rem 这里面有直接拷贝别人代码的,也有自己做的部分.(bat,js,vbs),为什么js不和vbs统一呢,:-)因为本人太懒了.
@Rem 为了隐藏窗口,所以难以实现在原始路径下执行,因此执行所有程序事件需使用绝对路径
@Rem 使用注册表确认服务是否安装(reg query HKLM\SYSTEM\CurrentControlSet\Services\[服务名])
@Rem 使用SC确认服务是否安装(sc query [服务名])
@Rem *****************************

@echo off
if {%1} == {1} (GOTO _Wait)
IF "%PROCESSOR_ARCHITECTURE%"  neq "x86" (set vnetlib="%~dp0vnetlib64.exe") ELSE (set vnetlib="%~dp0vnetlib.exe")
@Rem mode con cols=20 lines=1
@Rem color 30
@Rem 用于启动安装服务代码部分
echo %vnetlib%
sc query vmci >nul 2>nul||(echo vmci服务需要安装!&%vnetlib% -- install vmci&echo vmci服务安装完成!)
%vnetlib% -- start vmci
Rem net start vmci
sc query vmx86 >nul 2>nul||(echo vmx86服务需要安装!&%vnetlib% -- install vmx86&echo vmx86服务安装完成!)
%vnetlib% -- start vmx86
Rem net start vmx86
sc query vmkbd >nul 2>nul||(echo vmkbd服务需要安装!&%vnetlib% -- install vmkbd&echo vmkbd服务安装完成!)
%vnetlib% -- start vmkbd
Rem net start vmkbd
sc query VMAuthdService >nul 2>nul||(echo 授权服务需要安装!&%vnetlib% -- install authd&echo 授权服务安装完成!)
%vnetlib% -- start authd
Rem net start VMAuthdService
sc query vmnetuserif >nul 2>nul||(echo userif服务需要安装!&%vnetlib% -- install userif&echo userif服务安装完成!)
%vnetlib% -- start userif
Rem net start VMnetuserif

reg query HKLM\SYSTEM\CurrentControlSet\Services\vmnetbridge >nul 2>nul&&(goto _BridgeInstalled)
echo 桥接服务需要安装!
rundll32 setupapi,InstallHinfSection _Install1.NT 128 %cd%\netadapter.inf >nul
ver|find "6.">nul && (copy /y BridgeWin7\*.* >nul)
ver|find "5.">nul && (copy /y BridgeWinxp\*.* >nul)
%vnetlib% -- install bridge
del vmnetbridge.dll
del vmnetbridge.sys
echo 桥接服务安装完成!
:_BridgeInstalled
%vnetlib% -- start bridge

@Rem net stop VMnetBridge
@Rem net start VMnetBridge
net start hcmon
net start "VMware NAT Service"
net start VMnetDHCP
net start VMUSBArbService

@Rem 用于启动虚拟机代码部分
start "" "%~dp0vmware.exe"

@Rem 用于隐藏窗口的代码部分
>"%temp%\vmware.vbs" echo set WshShell = WScript.CreateObject^(^"WScript.Shell^"^)
>>"%temp%\vmware.vbs" echo WshShell.Run chr^(34^) ^& %0 ^& chr^(34^) ^& ^" 1^",0
start /wait /d "%temp%" vmware.vbs
del %temp%\vmware.vbs
exit

:_Wait

@Rem 用于监测虚拟机退出代码部分
@Rem To PAUSE
@Rem if(WScript.Arguments.Length != 0)
@Rem {
@Rem     var sQuery = "Select * from Win32_Process where Name = '" + WScript.Arguments(0) + "'";
@Rem     for(var i = 1; i < WScript.Arguments.Length; i++)
@Rem     {
@Rem         sQuery = sQuery + &quot; or Name = '&quot; + WScript.Arguments(i) + &quot;'&quot;
@Rem     }
@Rem     var objProcesses;
@Rem     var WMI = GetObject(&quot;WinMgmts:&quot;);
@Rem     do
@Rem     {
@Rem         objProcesses = null;
@Rem         WScript.Sleep(1000);
@Rem         objProcesses = WMI.ExecQuery(sQuery);
@Rem     }
@Rem     while(objProcesses.count != 0)
@Rem }

@Rem 用于虚拟机退出后清理的代码部分
>&quot;%temp%\vmware.js&quot; ECHO if(WScript.Arguments.Length != 0)
>>&quot;%temp%\vmware.js&quot; ECHO {
>>&quot;%temp%\vmware.js&quot; ECHO     var sQuery = &quot;Select * from Win32_Process where Name = '&quot; + WScript.Arguments(0) + &quot;'&quot;;
>>&quot;%temp%\vmware.js&quot; ECHO     for(var i = 1; i ^< WScript.Arguments.Length; i++)
>>&quot;%temp%\vmware.js&quot; ECHO     {
>>&quot;%temp%\vmware.js&quot; ECHO         sQuery = sQuery + &quot; or Name = '&quot; + WScript.Arguments(i) + &quot;'&quot;
>>&quot;%temp%\vmware.js&quot; ECHO     }
>>&quot;%temp%\vmware.js&quot; ECHO     var objProcesses;
>>&quot;%temp%\vmware.js&quot; ECHO     var WMI = GetObject(&quot;WinMgmts:&quot;);
>>&quot;%temp%\vmware.js&quot; ECHO     do
>>&quot;%temp%\vmware.js&quot; ECHO     {
>>&quot;%temp%\vmware.js&quot; ECHO         objProcesses = null;
>>&quot;%temp%\vmware.js&quot; ECHO         WScript.Sleep(1000);
>>&quot;%temp%\vmware.js&quot; ECHO         objProcesses = WMI.ExecQuery(sQuery);
>>&quot;%temp%\vmware.js&quot; ECHO     }
>>&quot;%temp%\vmware.js&quot; ECHO     while(objProcesses.count != 0)
>>&quot;%temp%\vmware.js&quot; ECHO }
echo 进入后台等待
cscript.exe //nologo &quot;%temp%\vmware.js&quot; vmware.exe vmware-vmx.exe

del %temp%\vmware.js

net stop VMUSBArbService
net stop hcmon
net stop VMnetDHCP
net stop &quot;VMware NAT Service&quot;
net stop VMnetBridge
net stop VMnetuserif
net stop VMAuthdService
net stop vmkbd
net stop vmx86
net stop vmci

reg query &quot;HKLM\SOFTWARE\VMware, Inc.&quot; /v OnceStarted&&(GOTO _OnceStarted)
sc config VMUSBArbService start= demand
sc config hcmon start= demand
sc config VMnetDHCP start= demand
sc config &quot;VMware NAT Service&quot; start= demand
sc config VMnetBridge start= demand
sc config VMnetuserif start= demand
sc config VMAuthdService start= demand
sc config vmkbd start= demand
sc config vmx86 start= demand
sc config vmci start= demand
reg add &quot;HKLM\SOFTWARE\VMware, Inc.&quot; /v OnceStarted
:_OnceStarted

taskkill /f /im vmware-tray.exe >nul 2>nul
exit

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-55516-1-1.html 上篇帖子: 用VMware9 安装 mac 10.8和10.9搜集的资料 下篇帖子: 安装vm tools
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表