zoukankan      html  css  js  c++  java
  • 批处理脚本学习笔记1--vmware虚拟机启停控制

    起因

            因工作需要,在WIN10笔记本上通过vmware workstation装了两台CentOS虚机(CentOS_1、CentOS_2),经常需要进行虚机的启停切换操作,通过vmware的控制台操作略感繁杂,如:打开控制台-选择虚机启动-关闭控制台(虚机后台运行),需要对虚机进行操控时又需要把控制台切换到前台,故想通过批处理脚本来实现一键启停。
            之前只是对批处理有过了解,但从未实际操刀写过脚本来进行实际应用,故在编写脚本的时候在网上查阅了很多资料,包括vmware的vmrun命令、cmd的功能跳转、cmd控制台自定义(画自定义风格菜单)等,现对过程中的一些命令用法、知识点等做个总结。

    知识点总结

    1.cmd 窗口自定义
    参考百度经验:制作一个漂亮的批处理选择,原文链接:https://.baidu.com/article/c85b7a646cb3b6003bac9514.html
    修改窗口标题,通过title命令实现,你可以修改为任何你想要展示的标题。
    title vmware 虚拟机启停控制
    控制展示窗口大小,通过mode con修改cols(列)和lines(行)值控制窗口大小。(通过mode命令可查看默认值)
    mode con cols=60 lines=25
    color修改背景颜色,颜色属性由两个十六进制数字指定 – 第一个对应于背景,第二个对应于前景。通过color /?获取cmd中所有支持的颜色。如:
    color 1F

    2.vmrun命令
    vmrun.exe位于vmware的安装目录下(运行vmware.exe打开的是是控制台)。vmrun /?可以查看命令的具体用法。

    常用的启停及参数作用如下:
    vmrun -T ws start “E:VMachinesCentOS_1CentOS_1.vmx” nogui | gui 启动虚拟机(带不带图形界面)
    vmrun -T ws stop “E:VMachinesCentOS_1CentOS_1.vmx” hard | soft 关闭虚拟机
    vmrun -T ws rest “E:VMachinesCentOS_1CentOS_1.vmx” hard | soft 重启虚拟机
    vmrun -T ws suspend “E:VMachinesCentOS_1CentOS_1.vmx” hard | soft 挂起虚拟机
    vmrun list 列出正在运行的虚拟机
    参数说明:
    -T 是区分宿主机的类型,ws|server|server1|fusion|esx|vc|player,不加-T ws在Workstation下也能正常运行
    hard soft区别没搞明白,可能类似于冷启或热启动
    stop | reset | sunspend 在虚拟机未启动时会报错。恢复时直接用start,虚拟机已经启动的情况下,再次start时不会重启,返回启动成功的提示。

    3. cmd命令说明

        echo 输出空行
        echo= echo echo;
        echo+ echo/ echo[ echo]
        echo: echo. echo
        这十种方法可以分为三组,每组的效率依次递减。
        (截取自:http://www.jb51.net/article/30987.htm)

        call与goto区别
        call除了可以跳转到指定标签代码块外,还可以调用bat批处理外的命令(如exe或其它bat),goto只能跳转到指定的标签,即:
        call :label
        call a.bat
        goto label
        call :label 时:不能省略,goto可用可不用(goto :label或goto label都可以)
        call可以带参数调用,如:
        call :start %VM1% (用%%表示引用参数)

        设置参数
        set a="str1" (可用双引号或单引号)
        set /p input=请输入[0:返回菜单,任意键:退出]:(/p表示input变量值由用户输入,=后面的文字为用户输入的提示信息)

        set /p 与choice的区别
        两者都可接收用户输入,set /p用户可输入任意字符,直到enter回车;choice只能在给定的取值范围内选择(只接收单个字符),且无须回车确认。如:
        choice /t 10 /c 1234567890 /d 9 /m "请选择[默认查看虚拟机运行情况]:"

    choice /t 10 /c 1234567890 /d 9 /n /m "请选择[默认查看虚拟机运行情况]:"

    choice /t 10 /c 1234567890 /d 9

    /C choices:指定要创建的选项列表choices,如1234,默认列表是 “YN” 。用户输入的字符必须在用 /C 选项指定的一组选择中,否则会发出蜂鸣声。
    /CS : 允许选择分大小写的选项。默认情况下,不分大小写。
    /D choice:在n秒之后自定选择/D指定的默认选项,此参数必须同时用 /T 指定默认时间n。
    /T timeout:做出默认选择之前,暂停的秒数。可接受的值是从 0 到 9999。如果指定了 0,就不会有暂停,默认选项会得到选择。
    /M text :指定提示之前要显示的消息text。如果没有指定,则只显示提示choices选项。
    /N :在提示符中隐藏选项列表。提示前面的消息仍可显示,选项依旧处于启用状态。

    用户选择第几个选项,则errorlevel值为几,如选择第3项,则%errorlevel%=3
    (%errorlevel%为上一命令执行后的结果,成功则为0,失败为1-255)

    %n
    %n (n为0-9的数字,如%1 %2),表示执行批处理文件/命令时传入的第几个参数,%0为bat文件本身,%1为第1个参数,%2为第2个参数,如:

    vmstart.bat 1.vmx 2.vmx 3.vmx
    echo %1
    1.vmx
    echo %2
    2.vmx
    echo %0
    vmstart.bat

    重定向
    与linux重定向相同,1为stdout,2为stderr,默认均为显示屏。
    pause > null(1重定向到null,该命令的执行结果不显示在屏幕上)
    echo abc > file1(echo输出的结果重定向到file1文件,即在file1中写入abc)
    echo abc >> file1(>>输出重定向到file1,若file1存在,则添加在文件尾部)


    其它
    命令前加上@符号,表示运行时该条命令不显示。有echo off指定时,命令前的@可省略,结果相同,屏幕上都不显示命令和执行情况。

     

    虚拟机启停脚本(::为注释内容,不会执行)

    @echo off
    title vmware 虚拟机启停控制
    mode con cols=60 lines=25
    color 1F
    
    ::"C:Program Files (x86)VMwareVMware Workstationvmrun.exe" start "E:VMachinesCentOS_1CentOS_1.vmx" nogui 
    ::"C:Program Files (x86)VMwareVMware Workstationvmrun.exe" suspend "E:VMachinesCentOS_1CentOS_1.vmx" soft 
    ::start|stop|reset|suspend|pause|unpause|list 
    ::param:hard(冷重启/强制关闭)|soft(热重启/正常关闭) 
    ::param:gui(图形界面)|nogui(后台启动无界面) 
    ::echo %PRG% %VM1% %VM2% 
    ::echo %1 %2 %3 批处理传入的参数 
    ::echo %errorlevel% errorlevel上一命令返回的结果,一般0成功,失败1-255
    
    set PRG="C:Program Files (x86)VMwareVMware Workstationvmrun.exe" 
    set VM1="E:VMachinesCentOS_1CentOS_1.vmx" 
    set VM2="E:VMachinesCentOS_2CentOS_2.vmx"
    
    :menu
    	cls 
    	::操作功能菜单 
    	echo. 
    	echo *************************************************** 
    	echo; 
    	echo 1. 启动虚拟机Centos_1 
    	echo 2. 启动虚拟机Centos_2 
    	echo 3. 挂起虚拟机Centos_1 echo 
    	4. 挂起虚拟机Centos_2 echo 
    	5. 重启虚拟机Centos_1 echo 
    	6. 重启虚拟机Centos_2 echo 
    	7. 关闭虚拟机Centos_1 echo 
    	8. 关闭虚拟机Centos_2 echo 
    	9. 查看运行的虚拟机 echo 
    	0. 退出 
    	echo;
    	echo     ***************************************************
    
    	choice /t 10 /c 1234567890 /d 9 /n /m "请选择[默认查看虚拟机运行情况]:"
    
    	@if %errorlevel% == 1 call :start %VM1%
    	@if %errorlevel% == 2 call :start %VM2%
    	@if %errorlevel% == 3 call :suspend %VM1%
    	@if %errorlevel% == 4 call :suspend %VM2% 
    	@if %errorlevel% == 5 call :reset %VM1% 
    	@if %errorlevel% == 6 call :reset %VM2% 
    	@if %errorlevel% == 7 call :stop %VM1% 
    	@if %errorlevel% == 8 call :stop %VM2% 
    	@if %errorlevel% == 9 call :list 
    	@if %errorlevel% == 10 (goto exit) else (goto menu) 
    
    :start
        @echo 正在启动虚拟机%1
        %PRG% -T ws start %1 nogui
        if %errorlevel% == 0 (echo %1启动成功)
        goto end
    
    :suspend
        echo 正在挂起虚拟机%1
        %PRG% -T ws suspend %1 soft
        if %errorlevel% == 0 (echo %1已挂起)
        goto end
    
    :reset
        echo 正在重启虚拟机%1 soft
        %PRG% -T ws reset %1
        if %errorlevel% == 0 (echo %1重启成功)
        goto end
    
    :stop
        echo 正在关闭虚拟机%1
        %PRG% -T ws stop %1 soft
        if %errorlevel% == 0 (echo %1已关闭)
        goto end
    
    :list
        echo 当前运行的虚拟机......
        %PRG% list
        echo 按任意键返回...
        pause > null
        goto menu
    
    
    :end
        choice /t 10 /c YN /d y /m "是否退出[10秒后自动退出]:"
        @if %errorlevel% == 1 (goto exit) else (goto menu)
    
    :exit
        exit
    
  • 相关阅读:
    Spring MVC 迁移项目搭建运行
    linux 安装 nginx
    linux 安装 redis
    linux 安装 jdk
    存储过程之游标插入数据
    存储过程之基础语法
    AES加密解密,自定义加密规则记录
    idea破解记录
    Mysql-explain之Using temporary和Using filesort解决方案
    C#多线程学习笔记(朝夕eleven) Task启动方式、Task阻塞、Task.Delay()、多线程异常处理、任务取消、多线程的临时变量、共享数据的lock、Task返回值
  • 原文地址:https://www.cnblogs.com/kangleweb/p/11137716.html
Copyright © 2011-2022 走看看