2013-10-07 1 views
0

Je sais que Batch est un langage de script pauvres et vous ne pouvez pas attendre beaucoup de lui mais je pense que cela pourrait être fait, mais je ne sais pas s'il existe des moyens plus faciles. Je veux parcourir deux listes d'éléments (le même nombre), connectés entre eux de la même manière qu'un tableau associatif. Ce que je veux c'est garder la référence de la position de l'article dans la première liste et obtenir l'article de la deuxième liste. Peut-être que ce code vous expliquera mieux:Listes cartographie et numérisation dans le lot

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] 
) 

Pour Project1 Je veux obtenir Project1.txt, pour Project2 Je veux Project2.txt et ainsi de suite. Y at-il un truc ou même un moyen plus difficile d'y parvenir?

Répondre

0

Vous pouvez utiliser des pseudo-baies ici.

Les fichiers sont d'abord affectés à un fichier de pseudo-tableau [0] .. fichier [2].
Ensuite, pour chaque numéro de projet, le fichier associé est récupéré.

@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

Maintenant, je ne dispose que de savoir comment obtenir une valeur spécifique (comme le fichier correspondant à Projet2) – ali

+1

Il est une question de vos règles. Je suppose que votre règle est pour chaque projet un fichier et l'ordre dans les deux listes est le même. Mais peut-être vaut-il mieux définir pour chaque projet une propre liste de fichiers, comme 'set file_project1 = file1.c file2.c ...' – jeb

+0

Merci, je suppose que c'est beaucoup mieux – ali

Questions connexes