2013-10-07 83 views
0

我知道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.txt,爲Project2我想Project2.txt等。是否有任何技巧或甚至更難實現?

回答

0

您可以在這裏使用僞陣列。

首先將文件分配給僞陣列文件[0] .. file [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! 
) 
+0

現在我只需要找出如何獲得一個特定的值(如對應於Project2的文件) – ali

+1

這是你的規則問題。我想你的規則是針對每個項目的一個文件,並且這兩個列表中的順序是相同的。但也許最好爲每個項目定義一個自己的文件列表,比如'set file_project1 = file1.c file2.c ...' – jeb

+0

謝謝,我想這樣會更好 – ali