在windows批处理文件中,如果我有两个集合,我该如何同时循环它们(不是嵌套循环)?
SET A =(1,2,3)SET B =(A,B,C)
循环(1,A), (2,B), (3,C)
对?
答案 0 :(得分:4)
此方法可与任意数量的同时使用。
@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]
)
)
答案 1 :(得分:2)
@echo off
set "A=1,2,3"
set "B=A,B,C"
setlocal enableDelayedExpansion
set f1=0
set f2=0
for %%Z in (%A%) do (
set /a f1=f1+1
for %%Y in (%B%) do (
set /a f2=f2+1
if !f1! == !f2! (
echo [%%Z,%%Y]
)
)
set f2=0
)
没有一些嵌套就无法完成。我更喜欢矩形托架,以避免与正常托架一起逃脱。