码迷,mamicode.com
首页 > Windows程序 > 详细

Windows脚本

时间:2016-09-30 01:45:29      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:

最近项目测试比较麻烦,要启动好几个command窗口,手敲之类的有些繁琐,于是研究了一下windows脚本,实现以下功能:

  1. 懒人吗,参数意义顺序比较懒得记,所以需要友好参数提示;
  2. 根据参数数量决定启动几个Command窗口(以及执行命令);
  3. 根据参数决定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

这段实现信息量稍微大了点:

  1. start指令,代表新启一个Command窗口;
  2. timeout指令,用于阻塞,后面的参数时间单位是秒;
  3. GTR代表">"。

以上三个预期都已经实现了。

本文参考百度文库里面的《CMD命令行高级教程精选合编》以及博客园的junmuzi的专栏

Windows脚本

标签:

原文地址:http://www.cnblogs.com/xiashiwendao/p/5922184.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!