2017-04-03 86 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標記,也許這是一個簡單的問題?我承認我沒有足夠的批處理腳本經驗來修復它。 感謝您的回答! –