Concatenation dans une variable (set)

Concatenation dans une variable (set) - Shell/Batch - Programmation

Marsh Posté le 27-07-2006 à 10:29:05    

Bonjour,
 
Je souhaite lister tous les fichiers dans un répertoire
et pour chacun de ses fichiers j'aimerais les stocker dans une variable et qu'ils soient séparés par un point virgule (;)
 
Ma variable contiendrait "fic1 ; fic2; fic3; ... ; ficn;"
 

Code :
  1. set xmiFolder=F:\Users\Anthony\xmi
  2. set f=""
  3. for %%e in (dir %xmiFolder%\*.xmi) do (
  4. set f=%f% %%e
  5. )
  6. echo %f%


 
et j'obtient :

Code :
  1. "" F:\Users\Anthony\dernierfic.xmi;


 
Quoique je fasse ma variable contient seulement le dernier fichier de la boucle ..
La variable %f% est bien lu la première fois puisqu'on voit ""
mais ce qui est bizarre c'est que je ne dois pas réecrire sur la même variable ? dans la boucle ce n'est pourtant une variable locale ?
et je suis obligé de mettre le set f="" (ligne 2) sinon cette variable n'est jamais vidée. et meme si j'ai essayé c'est toujours le dernier fichier qui est ajouté.
 
Merci

Reply

Marsh Posté le 27-07-2006 à 10:29:05   

Reply

Marsh Posté le 27-07-2006 à 14:16:21    

for /?
et lis la partie parlant de l'expansion retardée des variables d'environement.

Reply

Marsh Posté le 28-07-2006 à 08:57:17    

ouai, j'ai pas trop compris ce que c'est expansion retardée à la vue d'autre post
mais j'ai remarqué l'utilisation d'un appel de procédure pour effectuer la tâche d'un for..

Reply

Marsh Posté le 28-07-2006 à 13:31:17    

Je ne sais pas de quel autre post tu parles ;) mais effectivement, un appel de procédure fera bien l'affaire et j'ai déjà donné un exemple dans chais_plus_quel_topic :D

Reply

Marsh Posté le 02-08-2006 à 16:48:48    

Tu doit activer l'expansion des variables retardées :
SETLOCAL ENABLEDELAYEDEXPANSION
 
et tu fait ensuite :  
set f=!f! %%e
 
A+

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed