关于bat的变量赋值和解析机制

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


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

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

3. bat的function实现?


见代码,和代码凝视

::@echo off
::adb的绝对路径
set qAdb="d:\Program Files (x86)\android-sdks\platform-tools\adb.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




转载于:https://www.cnblogs.com/mfmdaoyou/p/6952139.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值