2017-04-03 15 views
0

我需要写上处理参数与结构窗口批处理脚本:迭代过蝙蝠脚本变元的元组方式

one=1 two=2 three=3 

我想遍历他们的元组,即(psedu):

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

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

谢谢!

+0

这到底是一个元组? – SomethingDark

+0

@SomethingDark https://en.wikipedia.org/wiki/Tuple – Floern

+0

如果一个元组通常具有格式'(1,2,3)',而不是'one = 1 two = 2 three = 3',那么请特别定义你的参数打算传入的格式。 – Compo

回答

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

由于CMD.EXE将采取等号,你必须采取预防措施,一个参数的分隔符。 Aacini重新组合了这些对,我的批处理引用了所有参数和空格。

@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 
+0

这就是我想要的东西,如果变量不会得到额外的quatation标记,也许这是一个简单的问题?我承认我没有足够的批处理脚本经验来修复它。 感谢您的回答! –