Loops 批量嵌套For循环

Loops 批量嵌套For循环,loops,batch-file,for-loop,nested,Loops,Batch File,For Loop,Nested,我查阅了许多线索,似乎无法找到解决我问题的办法 我想做的是使用两个列表创建一个输出 set Client_ID=BJCH,BORG,FGMS,SVIN,JEFF,NWIL set PartNo=1,2,9,10,12,20 for %%A in (%Client_ID%) do ( for %%B in (%PartNo%) do ( echo %%A %%B ) ) 但我得到的结果是: BJCH 1 BJCH 2 BJCH 9 BJCH 10 B

我查阅了许多线索,似乎无法找到解决我问题的办法

我想做的是使用两个列表创建一个输出

set Client_ID=BJCH,BORG,FGMS,SVIN,JEFF,NWIL
set PartNo=1,2,9,10,12,20

for %%A in (%Client_ID%) do (
    for %%B in (%PartNo%) do (
        echo %%A %%B 

        )
)
但我得到的结果是:

BJCH 1
BJCH 2
BJCH 9
BJCH 10
BJCH 12
BJCH 20
BORG 1
BORG 2
BORG 9
BORG 10
BORG 12
BORG 20
FGMS 1
FGMS 2
FGMS 9
etc........
我需要的是

BJCH 1
BORG 2
FGMS 9
SVIN 10
JEFF 12
NWIL 20
知道我做错了什么吗?非常感谢您提供的任何帮助。

您的两个列表是分开的:如果您将的一个
嵌套到另一个列表中,那么您将增加结果的数量。对于
,无法在相同的
中处理两个列表,除非将列表转换为两个,然后在相同的
中处理两个数组,即,处理具有相同索引的两个数组的元素。例如:

setlocal EnableDelayedExpansion

set Client_ID[1]=BJCH
set Client_ID[2]=BORG
etc...

set PartNo[1]=1
set PartNo[2]=2
etc...

for /L %%i in (1,1,6) do echo !Client_ID[%%i]! !PartNo[%%i]!
您还可以通过以下方式模拟先前的处理(“具有相同索引的两个元素”):

@echo off
setlocal EnableDelayedExpansion

set Client_ID=BJCH,BORG,FGMS,SVIN,JEFF,NWIL
set PartNo=1,2,9,10,12,20

set i=0
for %%A in (%Client_ID%) do (
   set /A i+=1, j=0
   for %%B in (%PartNo%) do (
      set /A j+=1
      if !i! equ !j! echo %%A %%B 
   )
)
编辑:添加了输出示例


谢谢你的回复,但我似乎从你的更改中获得了任何输出。好的,这似乎会起作用,我将尝试一下。唯一的问题是我有一个大约20名客户的名单,他们可能会增长。谢谢你,先生。好的,我在我现有的脚本中发现了一个缺陷,并且发现单独运行这两个代码是完美的。再次感谢你的帮助。
BJCH 1
BORG 2
FGMS 9
SVIN 10
JEFF 12
NWIL 20