Windows脚本
最近项目测试比较麻烦,要启动好几个command窗口,手敲之类的有些繁琐,于是研究了一下windows脚本,实现以下功能:
- 懒人吗,参数意义顺序比较懒得记,所以需要友好参数提示;
- 根据参数数量决定启动几个Command窗口(以及执行命令);
- 根据参数决定Copy哪些文件到指定文件夹。
首先是第一个问题,其实有两种解决方案:第一个使用choice命令,通过给errorleve这个系统变量赋值来让客户进行设定;我采用的是第二个方案:set /p指令(set 结合p参数),这个形式的意义是打出友好提示,根据用户输入赋值。
@set /p serverNum="The number of server(2~4): "
@echo %serverNum%
首先解释一下最前面的"@"字符,代表不要回显本行;默认情况下,Windows会把所有的执行语句也会打出来;通过前面添加@可以在命令不显示当前执行行内容,世界清静嘛。类似的语句还有就是echo off;但是这个就是把所有的回显都关闭。
然后是set /p serverNum="XXX",在命令行显示XXX之后,你输入的内容,将会在敲回车之后赋值给"serverNum"。
下面是第二个问题,直接上脚本了:
@set /p syncFlag="Sync Flag(n, Nothing; t, Total; j,just Jar): "
@echo %syncFlag%
@if "%syncFlag%"=="j"copy /y transport.jar 9903 & copy /y transport.jar 9904
@if "%syncFlag%"=="t" copy /y transport.jar 9903 & copy /y transport.jar 9904 & copy /y config.properties 9903 & copy /y config.properties 9904
这里用到了if语句以及变量赋值和引用;变量的引用是变量名前后添加%,注意,对于字符串的比较处理时,需要在引用的变量前后添加""。这里的"&",意思是顺次批量执行。
最后一个需求:
@start 202-startUp9902.bat &
@timeout 1 & cd 9903 & start startUp9903.bat
@if %serverNum% GTR 2 cd ../9904 & start startUp9904.bat & timeout 1
@if %serverNum% GTR 3 cd ../9905 & start startUp9905.bat & timeout 1
这段实现信息量稍微大了点:
- start指令,代表新启一个Command窗口;
- timeout指令,用于阻塞,后面的参数时间单位是秒;
- GTR代表">"。
以上三个预期都已经实现了。
以下是后续开发中总结的几个小点:
1.exit退出Command(整个命令窗口关闭);goto :eof,是指跳到bat文件尾部,bat文件执行退出;eof是windows脚本内置的标签。两者同是退出,但是范围不一样。
2.goto定义的情况下,默认顺序执行是会走标签域,所以需要标签域之前调用goto :eof
例如:
…
goto :eof
:tag1
….
:tag2
3.windows脚本中字符串的拼接不需要任何连接符号,而且不需要前后添加"",只是在if语句,牵涉到字符串比较的时候需要使用""
4.set变量不需要添加%,但是引用的时候需要前后添加%;但是对于系统级别的变量,比如参数,只需要在前面添加%即可,自定义的变量前后都要添加%;另外,注意赋值"="两边不要有空格。
例如:
Set aa=192.169.0.1
Set cc=%aa%;192.169.0.2
Echo %cc%
结果输出就是192.168.1;192.169.0.2
本文参考百度文库里面的《CMD命令行高级教程精选合编》以及博客园的junmuzi的专栏。
Windows脚本的更多相关文章
- VBScript: Windows脚本宿主介绍
Windows脚本宿主(Windows Script Host, WSH)是一个Windows管理工具.WSH创建了一个脚本运行的主环境,WSH使脚本能够使用对象和服务,并提供脚本执行的准则.WSH还 ...
- windows脚本(VBS)之cmd命令行的妙用
windows脚本(VBS)之cmd命令行的妙用 (2009-08-06 13:40:55) 转载▼ 标签: 脚本 cmd 命令行 vbs js 简单 公式 windows it 分类: 计算机 脚本 ...
- 修改host指定域名指向ip,Windows脚本与Linux脚本
修改host指定域名指向ip,Windows脚本与Linux脚本 一,Windows系统修改hosts文件 Windows系统下hosts文件位置:C:\Windows\System32\driver ...
- windows脚本配置ip地址
背景:工作上经常涉及到要调试设备,每次都要手动配置静态ip地址,配置完之后还要重新改回来,有时候为了连续调试多台设备,来回手动更改ip,实在麻烦. 思考:想到windows有脚本,可以利用脚本文件达到 ...
- Windows脚本修改主机名-不重启
windows通过脚本方式修改主机名的方法有很多种,下面介绍修改注册表方式的脚本. 使用方法: 1 打开cmd,假如脚本名为ModifyHostname.bat 2 执行脚本,并加入脚本参数,其中第一 ...
- Windows脚本相关
1 获取IP地址 echo StartChangeIPFile echo 获取主机名 for /f %%i in ('hostname') do (set pcName=%%i) ::ping %pc ...
- dos2unix(windows脚本文件放到unix下运行要注意)
在windows下编写的shell脚本文件,直接放到linux下运行,是不行的. infiniDB的倒库脚本文件load.sh,将tbl文件导入infiniDB,怎么运行不成功,不建job.运来,是w ...
- windows 脚本
sudo.vbs http://blog.csdn.net/qidi_huang/article/details/52242053 c:\windows\sudo.vbs 'ShellExecute ...
- 使用windows脚本移动文件
1. 移动脚本 在部署web项目时,一般需要将打包的war包发布到Tomcat目录下,所以自己就在网上查找资料写了一个简略的移动文件的脚本,如下: @echo off echo "使用bat ...
随机推荐
- innodb对update的处理
当更新非聚集索引上记录 和 聚集索引上的主键时,是标记删除,然后插入新的记录 当更新聚集索引上的非主键列时,是updated-in-place,也就是说原地修改,不会插入新记录. 之前一直以为都是以标 ...
- orale做报表常用函数和表达式的总结
最近一段时间连续的做了几十张报表,通过原生sql对数据进行分析 ,也算是有了一定的了解,发现其中一些函数和表达式使用频率较高,现总结如下: (1).round()函数 round函数说白了就是把一 ...
- 【转载】最近在用Arrays的asList()生成的List时,List元素的个数时而不正确,数组转化为List,即Arrays.asList(intArray);
最近在用Arrays的asList()生成的List时,List元素的个数时而不正确. Java代码 //经多次测试,只要传递的基本类型的数组,生成List的元素个数均为1 char arrc = { ...
- SQL 拼接多个字段的值&一个字段多条记录的拼接 [轉]
例如student表: studentID studentName studentScore 01 Alice 90 02 Bill 95 03 Cindy 100 一.拼接多个字段的值 select ...
- centos 6.4 Apache 配置 flv mp4.h264 流媒体拖动
http://blog.csdn.net/xst686/article/details/9763995 加入流媒体扩展后要重启 httpd flv 流媒体 <textarea style=&qu ...
- Java _Map接口的使用(转载)
转载自:http://blog.csdn.net/tomholmes7/article/details/2663379.转载请注明原作者地址 Map Map以按键/数值对的形式存储数据,和数组非常相似 ...
- popen pclose 不等待命令执行完毕
$handle = popen("start D:\\test.bat", "r"); //exec("start D:\\test.bat" ...
- 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记19 为Demo添加手势
在这一话中我们将应用上一话学到的知识来为Demo添加手势识别,首先添加一个缩放的功能,其次添加一个拖动功能,使得小人的表情可以随着我们的手指改变. 首先来添加一个缩放手势的识别器,我们来到FaceVi ...
- MVC开发 好的扩展套件(Visual Studio 插件)
- IP address/地址 检查
1.Determine if a string is a valid IP address in C Beej's Guide to Network Programming 2.9.14. inet_ ...