迭代蝙蝠脚本以元组方式论证

时间:2017-04-03 15:47:44

标签: batch-file

我需要为windows编写一个批处理脚本来处理带有结构的参数:

one=1 two=2 three=3

我想在元组中迭代它们,即(psedu):

> for %%x,%%y in (%*) do
> 
>     echo param %%x got value %%y

我试过嵌套循环和其他丑陋的黑客,有没有方便的方法来获得我需要的东西?

谢谢!

2 个答案:

答案 0 :(得分:3)

@echo off
setlocal EnableDelayedExpansion

set "var="
for %%a in (%*) do (
   if not defined var (
      set "var=%%a"
   ) else (
      set "!var!=%%a"
      ECHO "!var!=%%a"
      set "var="
   )
)

输出示例:

C:\> test.bat one=1 two=2 three=3
"one=1"
"two=2"
"three=3"

答案 1 :(得分:1)

由于cmd.exe将等号作为参数分隔符,因此您必须采取预防措施。 Aacini重新组装了这对,我的批量在所有的args和空间周围放置了引号。

@Echo off
Set "Allargs="%*""
For %%A in (%AllArgs: =" "%) Do (
  For /f "tokens=1* delims==" %%x in (%%A) Do echo param %%x got value %%y
)
> test.cmd one=1 two=2 three=3
param one got value 1
param two got value 2
param three got value 3