Dos : transformer un fichier texte dans une autre structure

Bonjour à tous,

Je dois effectuer la transformation d’un fichier texte avec une structure défini depuis l’emplacement des caractères.

Je suis arrivé à définir un boucle FOR /f me permettant de parcourir le fichier et de transcrire dans mon format souhaité avec la commande :


for /f "delims=" %%a in ( %FEMPLOYE% ) DO ( 
	set LIGNE=%%a
	echo %LIGNE:~0,6%;%LIGNE:~6,29%;%LIGNE:~36,8%;%LIGNE:~44,8%;%LIGNE:~52,3%;%LIGNE:~55,1%%LIGNE:~59,2%%LIGNE:~61,2%; >> %FTMP%
) 

Le problème avec la commande utilisée est que seule la dernière ligne est traité, le nombre de fois qu’il y a de ligne dans le fichier…

Exemple avec le fichier en entrée :


1234  DUPONT Benoit                 0701201330062013AAA1   40UL      
2345  VIALOU Gill                   07012013        AAA1   41        

Éléments sortie :


2345  ;VIALOU Gill                   ;07012013;        ;AAA;141        
2345  ;VIALOU Gill                   ;07012013;        ;AAA;141        

J’ai comme l’impression que le passage de ma variable %%a à %LIGNE ne se fait pas correctement, mais je n’arrive pas à comprendre pourquoi ?

Merci de vos réponses.
Edité le 19/06/2013 à 15:30

Salut,

et si tu essayais avec token plutôt que de faire des extractions ?

for /f "tokens=1,2,3,4,5* delims= " %%a in ( %FEMPLOYE% ) DO ( 
	echo %%a;%%b,%%c,%%d,%%e >> %FTMP%
) 

en supposant que le délimiteur est un espace dans le fichier à traiter, et que toutes les lignes sont formatées de façon homogène (ce qui n’est pas cas dans l’exemple que tu nous donnes)

Je pense que ce n’est pas %LIGNE% mais !LIGNE! que tu devrais employer à partir du moment où ton set est dans une boucle

Tu as donné tout ton script, là ?
Il n’y a pas de ligne concernant setlocal ?