私は2つのセットを持っている場合、Windowsのバッチファイルでは、どのように(入れ子にされたループではない)それらを同時にループするのですか?Windowsのバッチファイルでは、同時に2つのセットをループする方法
SET A =(1,2,3)のSET B =(A、B、C)
ループ(1,A), (2,B), (3,C)
ペア?
私は2つのセットを持っている場合、Windowsのバッチファイルでは、どのように(入れ子にされたループではない)それらを同時にループするのですか?Windowsのバッチファイルでは、同時に2つのセットをループする方法
SET A =(1,2,3)のSET B =(A、B、C)
ループ(1,A), (2,B), (3,C)
ペア?
@echo off
set "A=1,2,3"
set "B=A,B,C"
setlocal enableDelayedExpansion
for %%Z in (%A%) do (
set flag=1
for %%Y in (%B%) do (
if !flag! == 1 (
echo [%%Z,%%Y]
set flag=0
)
)
)
いくつかのネストなしでは実行できません。私は角カッコが普通のもので逃げるのを避けるために好ましかった。
この方法は、任意の数の同時セットで使用できます。
@echo off
setlocal EnableDelayedExpansion
set "A=1,2,3"
set "B=A,B,C"
rem Separate A set into individual array elements
set i=0
for %%a in (%A%) do (
set /A i+=1
set "A[!i!]=%%a"
)
rem Separate B set into individual array elements
set j=0
for %%b in (%B%) do (
set /A j+=1
set "B[!j!]=%%b"
)
if %i% neq %j% (
echo A and B have not the same number of elements
goto :EOF
)
for /L %%i in (1,1,%i%) do echo (!A[%%i]!,!B[%%i]!)
アレイ管理の詳細については、this postのバッチファイルを参照してください。
もう一つ、おそらく簡単な方法:
@echo off
setlocal EnableDelayedExpansion
set "A=1,2,3"
set "B=A,B,C"
(for %%a in (%A%) do echo %%a) > A.txt
< A.txt (
for %%b in (%B%) do (
set /P "A="
echo [!A!,%%b]
)
)