zoukankan      html  css  js  c++  java
  • 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的专栏

  • 相关阅读:
    修改 MySQL 的 sql_mode 模式方法
    PHP 实现 Redis 连接池
    【转载】php解决高并发问题
    PHP 7 不适用函数:password_hash
    PDO 防止 SQL 注入示例
    记录一次 header 参数格式引发的错误
    Laravel 框架数据库查询构造器中 when 的易犯错误
    PHP 7.3.4 安装 Redis 4.0(Windows系统)
    汇编语言全梳理(精简版)
    Anaconda安装和使用
  • 原文地址:https://www.cnblogs.com/xiashiwendao/p/5922184.html
Copyright © 2011-2022 走看看