美文网首页计算机网络相关
BAT传参数组(字符串化)

BAT传参数组(字符串化)

作者: huangxiaomiao | 来源:发表于2017-04-20 10:53 被阅读0次

    页面允许用户写入多个项目名称和地址,比如说希望这样调用

    D:\test.bat "pro1,pro2,pro3","beijing,shanghai,guangzhou"

    以下内容保存为test.bat文件

    @echo off

    setlocal EnableDelayedExpansion

    set projects=%1

    :loop1

    set locations=%2

    for /f "Tokens=1,* Delims=," %%a in (%projects%) do (

    set proj=%%a

    set projects="%%b"

    :loop2

    for /f "Tokens=1,* Delims=," %%c in (%locations%) do (

    set loc=%%c

    set locations="%%d"

    echo !proj!_!loc!  %执行目标动作%

    goto :loop2

    )

    goto :loop1

    )

    输出为:

    pro1_beijing

    pro1_shanghai

    pro1_guangzhou

    pro2_beijing

    pro2_shanghai

    pro2_guangzhou

    pro3_beijing

    pro3_shanghai

    pro3_guangzhou

    解释:

    setlocal EnableDelayedExpansion:设置本地为延迟扩展,这样在语句块里边用双“!”可以拿到变化了的数据,用双“%”拿到的是最开始赋的值。

    Tokens=1,* Delims=,:表示以“,”为分割符分割字符串,取第1列和剩下的所有作为第2列。

    set projects="%%b":这里第2列的数据一定要用双引号括起来,这样才能被读成一个字符串,否则会被识别为两个参数,不能在下一次循环里去解析。

    相关文章

      网友评论

        本文标题:BAT传参数组(字符串化)

        本文链接:https://www.haomeiwen.com/subject/dvnkzttx.html