• Windows脚本


    最近项目测试比较麻烦,要启动好几个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代表">"。

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

    以下是后续开发中总结的几个小点:

    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的专栏

  • 相关阅读:
    idea + springboot 的java后台服务器通过小米推送
    python编程之禅
    温故而知新-MySQL高级编程
    温故而知新-mysql的一些语法show,describe,explain,fulltext
    温故而知新-PHP文件操作函数
    温故而知新-正则单词和strlen
    php使用tcpdf实现在线PDF功能
    温故而知新-array_walk和sizeof和array_count_values()和extract()
    温故而知新-strtok函数
    mysql中的blob和text区别
  • 原文地址:https://www.cnblogs.com/xiashiwendao/p/5922184.html
Copyright © 2020-2023  润新知