List 批量列出映射和扫描
我知道批处理是一种糟糕的脚本语言,您对它的期望不高,但我认为这是可以做到的,但我不知道是否有更简单的方法。 我想循环遍历两个元素列表(相同编号),它们之间的连接类似于关联数组。我想要的是保留第一个列表中项目位置的引用,并从第二个列表中获取项目。也许这段代码可以更好地解释:List 批量列出映射和扫描,list,batch-file,for-loop,element,List,Batch File,For Loop,Element,我知道批处理是一种糟糕的脚本语言,您对它的期望不高,但我认为这是可以做到的,但我不知道是否有更简单的方法。 我想循环遍历两个元素列表(相同编号),它们之间的连接类似于关联数组。我想要的是保留第一个列表中项目位置的引用,并从第二个列表中获取项目。也许这段代码可以更好地解释: SET Projects=(Project1 Project2 Project3) SET Files=(Project1.txt Project2.txt Project3.txt) for %%i in %Project
SET Projects=(Project1 Project2 Project3)
SET Files=(Project1.txt Project2.txt Project3.txt)
for %%i in %Projects% do (
:: Get the corresponding value in Files like SET ProjectFile=Projects[%%i]
)
对于
Project1
我想要得到Project1.txt
,对于Project2
我想要Project2.txt
等等。有什么诀窍或者更难的方法来实现这一点吗?您可以在这里使用伪数组
首先,将这些文件分配给伪数组文件[0]…文件[2]。然后为每个项目编号提取相关文件
@ECHO OFF
setlocal EnableDelayedExpansion
SET Projects=Project1 Project2 Project3
SET Files=Project1.txt Project2.txt Project3.txt
set /a file_n=0
for %%f in (%files%) do (
set /a file_n+=1
set "files[!file_n!]=%%f"
)
set proj=0
for %%p in (%Projects%) do (
set /a proj+=1
call set file=%%files[!proj!]%%
echo !file!
)
现在我只需要找出如何获得一个特定的值(比如Project2对应的文件),这是一个规则问题。我想你的规则是每个项目有一个文件,两个列表的顺序是一样的。但也许最好为每个项目定义一个自己的文件列表,比如
set file\u project1=file1.c file2.c…
谢谢,我想这样更好