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 ...
随机推荐
- Making Use of Forms and Fieldsets
Making Use of Forms and Fieldsets So far all we have done is read data from the database. In a real- ...
- linux crt
1.仿真 终端选linux ANSI颜色[有颜色了] 使用颜色方案[颜色加深了] 2.外观 选传统的 ,utf-8 就不会乱码了
- iOS开发之OCR光学识别储蓄卡以及信用卡
最近由于公司需要一个扫描银行卡获取卡号的功能,网上找了很多相关的资料,完全扫描银行卡获取卡号信息的都是价格贵的不得了的,而且仅仅只是授权而已,在此咱退而求次,找到一个可以扫描信用卡的第三方框架,给大家 ...
- Java基础知识强化100:JVM 内存模型
一. JVM内存模型总体架构图: 方法区和堆由所有线程共享,其他区域都是线程私有的 二. JVM内存模型的结构分析: 1. 类装载器(classLoader) 类装载器,它是在java虚拟机中用途是 ...
- C# 重新改变数组的长度
重新改变数组的长度 System.Array.Resize(ref FieldName, j);
- Android开发环境搭建完全图解(转)
本文介绍从0开始,在Linux系统下,搭建一个Android开发环境的方法. 如果你是<Learning Android>这本书的读者,你也可以参考这篇文章,因为这篇文章是以书中的安装方法 ...
- 高灵活低耦合Adapter快速开发攻略
Android开发中经常需要使用Adapter. 传统方法是自定义一个Adapter并继承AndroidSDK内的BaseAdapter, 这种方式代码量大,耦合度高,灵活性差(各种监听事件需要对Vi ...
- 【shell】 I/O重定向
1.基本概念 a.I/O重定向通常与 FD有关,shell的FD通常为10个,即 0-9: b.常用FD有3个,为0(stdin,标准输入).1(stdout,标准输出).2(stderr,标准错 ...
- CentOS 7 安装virtualBox
sudo rpm -ivh rpmforge-release-0.5.1-1.el5.rf.x86_64.rpm sudo yum install VirtualBox-5.0
- 初步接触html心得
接触HTML大概有七天,做一下小总结,过过记忆. html大致可分为三部分:Dtd头.Head.Body三大部分. Dtd头:是用于浏览器编辑的,也就是俗话说的给电脑看的的东西. Head:内细分下大 ...