页面允许用户写入多个项目名称和地址,比如说希望这样调用
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列的数据一定要用双引号括起来,这样才能被读成一个字符串,否则会被识别为两个参数,不能在下一次循环里去解析。