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

你可能感兴趣的:(BAT传参数组(字符串化))