BAT传参数组(字符串化)

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

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列的数据一定要用双引号括起来,这样才能被读成一个字符串,否则会被识别为两个参数,不能在下一次循环里去解析。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 个人学习批处理的初衷来源于实际工作;在某个迭代版本有个BS(安卓手游模拟器)大需求,从而在测试过程中就重复涉及到...
    Luckykailiu阅读 4,761评论 0 11
  • 批处理符号简介 回显屏蔽 @ 重定向1 >与>> 重定向2 < 管道符号 | 转义符 ^ 逻辑命令符包括:&、&&...
    wyude阅读 3,025评论 2 5
  • dos 批处理 一:windows的命令行模式(win+R)在里面写CMD就可以进入windows的命令行模式了二...
    chenchao981阅读 772评论 0 6
  • [TOC] ##Assoc 显示或修改文件扩展名关联 Assoc [.Ext[=[Filetype]]] .Ex...
    btijjj阅读 367评论 0 1
  • 吾儒养心未尝离却事物,只顺其天则自然就是功夫。——王阳明 王阳明认为,我们儒家中人,修身养性并没有离开平常的事物,...
    认识我你不亏阅读 352评论 0 0