我需要为windows编写一个批处理脚本来处理带有结构的参数:
one=1 two=2 three=3
我想在元组中迭代它们,即(psedu):
> for %%x,%%y in (%*) do
>
> echo param %%x got value %%y
我试过嵌套循环和其他丑陋的黑客,有没有方便的方法来获得我需要的东西?
谢谢!
答案 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