zoukankan      html  css  js  c++  java
  • 关于bat的变量赋值和解析机制

    以下的演示涉及几个知识点:


    1. 怎样把命令输出内容保存到变量中?

    2. 多次改变变量值,为什么在for或是if的()中的无效,怎样变通?

    3. bat的function实现?


    见代码,和代码凝视

    ::@echo off
    ::adb的绝对路径
    set qAdb="d:Program Files (x86)android-sdksplatform-toolsadb.exe"
    echo ADB.exe绝对路径是: %qAdb%
    
    ::通过for能使用``来返回命令的输出到变量中的特点,达到把命令输出结果保存到变量的目的
    FOR /F "usebackq delims==" %%i IN (`%qAdb% get-state`) do (
        echo 手机当前连接状态:%%i
        set mobileState=%%i
    )
    
    echo.
    
    ::不能使用NOT 否则无法使用()这样多行的语句;
    ::()中无法写凝视,由于bat把它()当成一行语句,这样凝视就相当于一行中语句一部分
    if "device" == "%mobileState%" (
        echo 手机已经连接上
    ) else (
        echo 手机未连接
        echo.
        echo 您的电脑IP当前地址例如以下:
        ipconfig|find /I "IPv4"
        echo.    
        call :getIp
        call :connect
    )
    
    ::以下由于是function声明部分,就当这里是bat的末尾,使用goto跳转到bat末尾
    GOTO :EOF
    
    
    ::以下是function===============================
    
    ::func 得到用户输入ip
    :getIp
        set /p ip=输入手机ip地址,以adb连接它
    ::退出本次回调,跳转到bat尾
    GOTO :EOF
    
    ::func 使用用户输入ip通过adb连接手机
    ::由于bat的()当成一行解析,在解析这一行代码时,里面使用到的变量值必须在解析前赋值,在这一行中改变某变量值时,仅仅有在下句语句解析时,才得得到;依据这个特性,无法在一行中改变变量,所以仅仅能把set与get分开写成多行(label)的方式来运行
    :connect
    
        echo.
        echo 尝试连接 %ip%
        %qAdb% connect %ip%
    ::退出本次回调,跳转到bat尾
    GOTO :EOF
    




  • 相关阅读:
    快速莫比乌斯变换(FMT)和快速沃尔什变换(FWT)
    组合意义证明——「Zeilberger 老爷子的 T 恤上写了啥?」
    【题解】礼物 | [洛谷 P4916] 魔力环【20210113 省选模拟赛】【Burnside引理 容斥 组合数】
    线性基总结
    HTML中的img标签属性
    html5语义化标签
    html中代替空格、大于号、小于号等字符编码
    前端网页全局属性
    js中的script标签属性
    html中的meta标签属性
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/6952139.html
Copyright © 2011-2022 走看看