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 ...
随机推荐
- 数据库通用Jdbc操作
public class JdbcUtil { /** * 关闭一个数据库链接 * @param conn */ public static void closeConnection(Connecti ...
- 你不知道的 Javascript
作用域 词法作用域:编译阶段确定(欺骗词法作用域 eval with) function foo(str){ "use strict" eval(str) console.log( ...
- 3D分析之Functional Surface工具箱(转)
来自:http://blog.csdn.net/kikitamoon/article/details/8195797 1. Add Surface Information(添加表面信息) 向点.线或面 ...
- [ImportNew]Java中的并发处理
本文来源:http://www.importnew.com/14506.html 这篇文章讨论了Java应用中并行处理的多种方法.从自己管理Java线程,到各种更好几的解决方法,Executor服务. ...
- JavaScript高级程序设计(第三版)学习笔记11、12、17章
章, DOM扩展 选择符 API Selector API Level1核心方法querySelector .querySelectorAll,兼容的浏览器可以使用 Document,Element ...
- PHP基础2
一.函数赋值问题 function add($num1,$num2=5){ echo $num1+$num2; } add(5,19); 二.global 全局变量 把变量加入到全局变量数组中 ...
- CSS常用布局实现方法
CSS 布局对我来说,既熟悉又陌生.我既能实现它,又没有很好的了解它.所以想总结一下,梳理一下 CSS 中常用的一列,两列,三列布局等的实现方法.本文小白,仅供参考.但也要了解下浮动,定位等. 一.一 ...
- 【转】oracle的substr函数的用法
[转]oracle的substr函数的用法 ) would return 'The' ) value from dual
- C#学习笔记1:正则表达式和数据库连接
1.using System.Text.RegularExpressions; 只有导入该命名空间,才能引入Regex对象,IsMatch是Regex中的一个方法,作用是来判断(输入)内容是否满足正则 ...
- SQLSERVER2000使用TSQL将数据导入ACCESS并压缩生成rar
查询分析器操作ACCESS数据表数据 (1)查询:select top 10 * from OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'C:\Documents an ...