我有一个项目列表和一个项目类型列表。我需要迭代项目类型列表,每次所选项目类型等于某个值,我需要从项目名称中获取I th 条目。例如:
项目名称:Project1,Project2,Project3
项目类型:web,ssis,ssis
我需要所有“ssis”项目,因此结果列表应为“Project2,Project3”。
我已经习惯了很多/但是我不知道如何在“for”迭代中获得“i”,所以我可以从第二个列表中选择相关的条目。我已经对此进行了搜索并在“for”中进入了杂草,但似乎无法得出答案。
如果有一种方法比“我”游戏效果更好。如果有一种方法可以在第一个列表中使用“for”,并从第二个列表中提取相关条目,那也很棒。
非常感谢任何帮助。
答案 0 :(得分:0)
基于现已删除的评论:
@ECHO OFF
SET projlist=Project1,Project2,Project3
SET projtypes=web,ssis,ssrs
SET /a ptr=1
SETLOCAL ENABLEDELAYEDEXPANSION
FOR %%a IN (%projtypes%) DO (
ECHO %%a
SET index=1
FOR %%b IN (%projlist%) DO (
IF !index!==!ptr! ECHO %%b
SET /A index+=1
)
SET /a ptr=ptr+1
ECHO ----------------
)
ENDLOCAL
运行此命令会得到以下结果:
web
Project1
----------------
ssis
Project2
----------------
ssis
Project3
----------------
当然,您需要对其进行修改以满足您的确切需求。
答案 1 :(得分:0)
如果我理解正确,您希望分组属于同一项目类型的所有项目名称,并将结果显示为组列表。我采用了this post的答案,它匹配了两个列表的元素,并对其进行了修改以获得所需的组:
@echo off
setlocal EnableDelayedExpansion
set ProjectNames=Project1,Project2,Project3
set ProjectTypes=web,ssis,ssis
rem Group project names by type
set i=0
for %%A in (%ProjectTypes%) do (
set /A i+=1, j=0
for %%B in (%ProjectNames%) do (
set /A j+=1
if !i! equ !j! set NamesByType[%%A]=!NamesByType[%%A]!,%%B
)
)
rem Show result
for /F "tokens=2,3 delims=[]=" %%a in ('set NamesByType[') do (
set list=%%b
echo Type %%a: !list:~1!
)
输出:
Type ssis: Project2,Project3
Type web: Project1
您还可以参考NamesByType
array的特定元素,例如:
echo %NamesByType[ssis]%