我需要写上处理参数与结构窗口批处理脚本:迭代过蝙蝠脚本变元的元组方式
one=1 two=2 three=3
我想遍历他们的元组,即(psedu):
> for %%x,%%y in (%*) do
>
> echo param %%x got value %%y
我试过嵌套循环和其他丑陋的黑客,有没有一种方便的方法来得到我需要的东西?
谢谢!
我需要写上处理参数与结构窗口批处理脚本:迭代过蝙蝠脚本变元的元组方式
one=1 two=2 three=3
我想遍历他们的元组,即(psedu):
> for %%x,%%y in (%*) do
>
> echo param %%x got value %%y
我试过嵌套循环和其他丑陋的黑客,有没有一种方便的方法来得到我需要的东西?
谢谢!
@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"
由于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
这就是我想要的东西,如果变量不会得到额外的quatation标记,也许这是一个简单的问题?我承认我没有足够的批处理脚本经验来修复它。 感谢您的回答! –
这到底是一个元组? – SomethingDark
@SomethingDark https://en.wikipedia.org/wiki/Tuple – Floern
如果一个元组通常具有格式'(1,2,3)',而不是'one = 1 two = 2 three = 3',那么请特别定义你的参数打算传入的格式。 – Compo