2011-11-07 3 views
1

アルファベットとベータの2つのリストがあり、それぞれn個のアイテムがあります。バッチファイル自体で定義される2つの変数です。DOSのバッチスクリプトは、複数のリストをペアごとにトラバースします。

私は、両方のリストから反復するループをpairwiseにしたい。

だから、私は

alpha1 and beta1 

then 

alpha2 and beta2 

etc... 

へのアクセスを持っているでしょう私たちは、1つのリスト(アルファ)を​​介してループしているが、ベータ版へのインデックスとして使用するための明白な指標はありません。

これは、powershellではなくDOSのバッチスクリプトで行う必要があります。

+0

何を試しましたか?問題はどこだ? – jeb

+0

コードはどこに表示できますか? – jeb

答えて

3

私はあなたのリストはこれらのようなスペースで区切られた項目を持つバッチ変数であると仮定:

set alpha=alpha1 alpha2 alpha3 alpha... alphaN 
set beta=beta1 beta2 beta3 beta... betaN 

もしそうなら、あなたがこの方法をしたいと、あなたは彼らを処理することができる:

set i=1 
:loop 
for /F "tokens=%i%" %%a in ("%alpha%") do set alphaElem=%%a 
for /F "tokens=%i%" %%b in ("%beta%") do set betaElem=%%b 
if "%alphaElem%" == "" goto endLists 
echo Pair %i%- %alphaElem% and %betaElem% 
set /A i+=1 
goto loop 
:endLists 

異なりますより速いアプローチは、リストを配列に変換してから配列要素を直接操作することです。

setlocal EnableDelayedExpansion 
set i=0 
for %%a in (%alpha%) do set /A i+=1 & set alpha[!i!]=%%a 
set i=0 
for %%b in (%beta%) do set /A i+=1 & set beta[!i!]=%%b 
set n=%i% 
. . . 
for /L %%i in (1,1,%n%) do echo Pair %%i- !alpha[%%i]! and !beta[%%i]! 
関連する問題