列出批量映射和扫描

时间:2013-10-07 08:05:14

标签: list batch-file for-loop element

我知道Batch是一种糟糕的脚本语言,你不能期待它,但我认为这可以做到,但我不知道是否有更简单的方法。 我想循环遍历两个元素列表(相同的数字),它们之间的连接类似于关联数组。我想要的是保持第一个列表中项目的位置的引用,并从第二个列表中获取项目。也许这段代码会更好地解释:

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.txtProject2我需要Project2.txt,依此类推。是否有任何技巧甚至更难实现这一目标?

1 个答案:

答案 0 :(得分:0)

您可以在此处使用伪数组。

首先将文件分配给伪数组文件[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!
)