起因

因工作需要,在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:\VMachines\CentOS_1\CentOS_1.vmx” nogui | gui 启动虚拟机(带不带图形界面)
vmrun -T ws stop “E:\VMachines\CentOS_1\CentOS_1.vmx” hard | soft 关闭虚拟机
vmrun -T ws rest “E:\VMachines\CentOS_1\CentOS_1.vmx” hard | soft 重启虚拟机
vmrun -T ws suspend “E:\VMachines\CentOS_1\CentOS_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 .vmx .vmx .vmx
echo %
.vmx
echo %
.vmx
echo %
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)\VMware\VMware Workstation\vmrun.exe" start "E:\VMachines\CentOS_1\CentOS_1.vmx" nogui
::"C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe" suspend "E:\VMachines\CentOS_1\CentOS_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)\VMware\VMware Workstation\vmrun.exe"
set VM1="E:\VMachines\CentOS_1\CentOS_1.vmx"
set VM2="E:\VMachines\CentOS_2\CentOS_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

批处理脚本学习笔记1--vmware虚拟机启停控制的更多相关文章

  1. Linux学习笔记之一及虚拟机的安装

    学习Linux基础入门 学习实验楼Linux基础入门--学习笔记系列博客 第一节 Linux系统简介 Linux就是一个操作系统,操作系统在计算机系统中包括系统调用和内核两层.在简单了解了Linux的 ...

  2. Window脚本学习笔记之BAT简介

    本篇文章不是直接讲技术,而是对我自己学习这些年来的一番感触和简单的介绍,其间也穿插着一些基本的知识,若是学习技术者可跳过,亦不妨碍学习其他. BAT简介 BAT是Windows的批处理脚本,即以后缀“ ...

  3. Window脚本学习笔记之BAT文件处理

    BAT文件处理 列出盘中特定文件名的文件: @echo offdir C:\*.jpg /b/s>.\CDatejpg.txt dir C:\*.png /b/s>.\CDatepng.t ...

  4. 2.3 Nginx服务的启停控制

    在Linux平台下,控制Nginx服务的启停有多种方法 2.3.1 Nginx服务的信号控制 在Nginx服务的启停办法中,有一类是通过信号机制来实现的,Nginx服务器的信号控制如下: Nginx服 ...

  5. Windows脚本\批处理命令学习笔记

    1.为新建变量赋值: set 变量=值 2.输出变量的值 echo %变量% 3.关闭批处理中命令行的显示(默认是显示命令行的) 在文件開始处增加:echo off 若需又一次显示:echo on 若 ...

  6. VMware学习笔记之在虚拟机中使用Ghost系统盘安装xp黑屏卡在光标闪无法进入系统

    使用ghost安装后,无法进入系统,卡在光标闪动,请参考如下: https://www.cnblogs.com/mq0036/p/3588058.html https://wenku.baidu.co ...

  7. shell脚本学习笔记(符号)

    shell脚本的学习: 1.Shell的作用是解释运行用户的命令,用户输入一条命令,Shell就解释运行一条,这样的方式称为交互式(Interactive),Shell还有 一种运行命令的方式称为批处 ...

  8. 【Linux学习笔记0】-虚拟机运行CentOS(VMware12+CentOS)

    目录 一,资源 二,VMware12安装 记录自己学习linux的过程.这将会是一个系列,本文是该系列的第一部分,主要记录虚拟机(VMware12)及对应操作系统(CentOS)的安装过程. 虚拟机( ...

  9. Linux学习笔记之——安装虚拟机后,如何启用网卡

    版本:CentOS-6.5-i386-minimal 虚拟机:vmware 11.1.2   安装完之后是看不到网卡信息的,如下:         我们编辑网卡etho的配置信息:         将 ...

随机推荐

  1. java面向对象基础总结

    本周学习了java面向对象的一些基本概念,介绍了它三个主要特性,封装性.继承性.多态性,类与对象的关系,栈堆的关系,三个特性中主要讲了封装性,其他两个后面再讲. 类实际上是表示一个客观世界某类群体的一 ...

  2. POJ-3122.Pie(二分法最大化平均值)

    二分法的主题思路就是逐步逼近,所以这道题的思路自然一目了然,做题思路也是... 本题大意:题主过生日,它买了N块半径为R[ i ],高为1的圆柱形蛋糕,现在他要将这N块蛋糕等分给F + 1个人,为了好 ...

  3. Spark-Core RDD转换算子-Value型

    1. map(func) 作用: 返回一个新的 RDD, 该 RDD 是由原 RDD 的每个元素经过函数转换后的值而组成. 就是对 RDD 中的数据做转换. 创建一个包含1-10的的 RDD,然后将每 ...

  4. Redis基础都不会,好意思出去面试?

    作者:张君鸿 juejin.im/post/5d078cd6f265da1b8466e62c Redis的数据结构 Redis支持多种不同的数据结构,包括5种基础数据结构和几种比较复杂的数据,这些数据 ...

  5. 3.Golang的包导入

    1.golang的源码文件可以随意命名,但是属于同一个包的源文件必须声明 package base 2.golang的包引入规则 import ( "fmt" #系统包直接写名字 ...

  6. 数组去重,排序,重复次数,两个数组合并,两个数组去重,map(),filter(),reduce()

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. HDU2188选拔自愿者

    悼念512汶川大地震遇难同胞--选拔志愿者 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  8. 2101 可达性统计(拓扑排序/dfs+状态压缩)

    [题目描述] 给定一张N个点M条边的有向无环图,分别统计从每个点出发能够到达的点的数量.N,M≤30000. [题目链接] 2101 可达性统计 [算法] 拓扑排序之后逆序计算(感觉dfs更好写而且应 ...

  9. swiper和tab相结合

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  10. win10专业版Hyper-v下Docker挂载volume的方式使用Gitlab(汉化版)保存资料数据(使用外部redis)

    目录 话题 (191) 笔记 (137) 资料区 (2) 评价 (33) 介绍 讨论区 话题 win10专业版Hyper-v下Docker挂载volume的方式使用Gitlab(汉化版)保存资料数据( ...