• bat 命令集锦(一)


    一、知识点

    (1) 切换目录

      cd /d  "目标目录"

    如:cd /d "E:/logs"

    (2) 获取当前脚本所在全路径

         %~dp0

    如: cd /d %~dp0   表示切换到当前执行脚本所在路径

    (3) 设置变量值

           set  变量=xxx

    如: set SH_DIR=%~dp0   表示将当前执行脚本所在路径赋值给 SH_DIR变量

    (4) 使用变量值

         %变量%

    如: echo %SH_DIR%  表示打印 变量 SH_DIR 中的值

    (5) findstr

        表示对数据进行筛选,查找符合条件的数据

    如:netstat -ano|findstr 8082 表示查找占用8082的进程

    (6) 获取当前目录

         %cd%  

    如:set ROOT_DIR=%cd%  表示将当前目录路径赋值给 ROOT_DIR

    (7) for 循环遍历

    在 cmd 窗口中:for %i in (command1) do command2

    在批处理文件中:for %%i in (command1) do command2

    说明:

       a)  command1 表示的字符串或变量可以是一个或多个,当时多个的时候,每个元素之间用 空格键、跳格键、逗号、分号或等号隔开;

          如:  for %%i in (A,B,C) do echo %%i  

          输出结果为:

            A

            B

            C

        b) 搜索当前目录下有哪些文件

            for %%i in (*.*) do echo %%i

        c) 搜索当前目录下所有的文本文件

            for %%i in (*.txt) do echo "%%i"

         d) 解析某个文件中的全部行

            for /f %%i in (%filepath%) do echo %%i   输出文件中的所有行,这里 使用了 /f 表示解析每行内容

          e) tokens、delims  表示对每行的数据按照 delims 指定的分隔符进行分割,获取tokens 指定的列

             for /f "delims=、" %%i in (%filepath%) do echo %%i   表示遍历 filepath 文件中的每行,使用 "、" 对每行数据进行分割,默认提取第一列,则 echo %%i 表示打印每行第一列的内容

             for /f "tokens=5 delims=、-." %%i in (%filepath%) do echo %%i   表示遍历 filepath 文件中的每行,使用 "、-." 对每行数据进行分割,提取第五列,则 echo %%i 表示打印每行第五列的内容

    参考:https://blog.csdn.net/u013514928/article/details/79629937/

               https://blog.csdn.net/chinajobs/article/details/52798681

    (8) if 用法

    格式:

    if condition (

       多条语句

    ) else (

       多条语句

    )

    注意:这里的( ) 连个括号必须前后有空格,要不然不能成功执行

        a) if not condition   如:if not  "%pid%"==""   表示pid值不为空时为 true

        b) if condition       如:if "%pid%"==""     表示pid的值为空时为 true

        c) if exist 文件或目录    如:if exist %filepath%  表示 文件存在为 true

        d) if not exist 文件或目录    如:if not exist %filepath% 表示文件不存在为 true

        e) 数值比较

            int1 equ int2   判断2个数值是否相等,相等为 true

            int1 gtr  int2    判断 int1 是否大于 int2 ,当 int1 大于 int2 时为 true

            int1 geq int2    判断 int1 是否大于或等于 int2, 当 int1 大于或等于 int2 时为 true

            int1 leq int2    判断 int1 是否小于或等于 int2, 当 int1 小于或等于 int2 时为 true 

            int1 neq int2    判断 int1 是否不等于 int2, 当 int1 不等于 int2 时为 true

    (9) 后台执行脚本

       start /b  xxx.bat    后台执行脚本

       start /b java -jar xxx.jar   后台执行 jar 程序

    (10) 获取前一条语句执行结果

      %errorlevel%

      如: echo %errorlevel% 

    (11) 创建目录/文件

      mkdir xxx   或 md xxx

    (12) 强杀进程

       taskkill /pid %pid% -F 

    二、实操

    (1) 后台启动 java 程序

    cd /d %~dp0
    set SH_DIR=%~dp0
    cd ../
    set ROOT_DIR=%cd%
    echo %ROOT_DIR%
    echo %SH_DIR%
    set LOG_DIR=%ROOT_DIR%log
    if not exist %LOG_DIR% (
      md %LOG_DIR%
    )
    start /b java -jar %ROOT_DIR%/consul-consumer.jar >> %LOG_DIR%/start.log
    set result=%errorlevel%
    echo result=%result%
    exit %result% 

    (2) 对使用 findstr 查询到的多行结果进行逐行处理

    for /F "tokens=5 delims= " %%i in ('netstat -ano ^|findstr 8082^|findstr LISTENING') do set pid=%%i
  • 相关阅读:
    repr() Vs str()
    默认参数
    元组
    字典
    电脑可以办的两类最基本的事情
    代码块
    变量名
    print的逻辑
    input的逻辑
    让python2听懂中文
  • 原文地址:https://www.cnblogs.com/sandyflower/p/13686231.html
Copyright © 2020-2023  润新知