DOS - Retour à la ligne

Fermé
evra - 15 déc. 2008 à 23:01
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 - 16 déc. 2008 à 11:23
Bonjour,

A travers un script DOS, je souhaiterais mettre le contenu d'un fichier (constitué de plusieurs lignes) dans un fichier d'une seule ligne.

Exemple de fichier d'entrée:
L01;L02;L03
L11;L12;L13
L21;L22;L23

Fichier de sortie souhaité :
L01;L02;L03;L11;L12;L13;L21;L22;L23


Merci d'avance de votre aide.

3 réponses

cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
16 déc. 2008 à 00:45
Bonsoir,

Essaie cela, je pense que ça correspond à ce que tu cherches !
SETLOCAL ENABLEdelayedExpansion
SETLOCAL ENABLEextensions
CLS
rem Creation de l'environnement (fichier nomF_IN) de tests :
        SET  	      "nomF_IN=%USERNAME:~0,+3%-FichIN.txt"
        ECHO L01;L02;L03>%nomF_IN%
        ECHO L11;L12;L13>>%nomF_IN%
        ECHO L21;L22;L23>>%nomF_IN%

        SET  	      "nomF_OUT=%USERNAME:~0,+3%-FichOUT.txt"

           SET "VAR_LIG="
           FOR      /F   "tokens=1 delims=" %%J IN  (%nomF_IN%)   DO (
rem POUR TESTS  echo  J: %%J
                         SET "VAR_LIG=!VAR_LIG!%%J"                  )
rem POUR TESTS  echo  !VAR_LIG!

       ECHO !VAR_LIG! >  %nomF_OUT%

       GOTO                                                         :EOF
0
Merci Cchristian !
Cela fonctionne !!!

Cependant mon fichier d'entrée peut avoir un nombre de ligne variable.
Dans ton exemple, si je rajoutes des lignes manuellement, le fichier de sorti ne possède que les 3 lignes précédentes.

Comment cela pourrait être dynamique (sans à avoir saisir chaque ligne dans le script) ?



Merci,
0
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
16 déc. 2008 à 11:23
Bonjour,

Cette partie de code n'est à utiliser qu'une seule fois pour créer un environnement de test et si le fichier nomF_IN n'existe pas déjà dans ton environnement, s'il existe la séquence suivante doit être mise en commentaire (rem) ou bien éliminée avant toute éxécution du batch :
rem Creation de l'environnement (fichier nomF_IN) de tests :
        ECHO L01;L02;L03>%nomF_IN%
        ECHO L11;L12;L13>>%nomF_IN%
        ECHO L21;L22;L23>>%nomF_IN%

et de toute façon, le nom du fichier doit être actualisé avec le nom réel du fichier.
SET  	      "nomF_IN=%USERNAME:~0,+3%-FichIN.txt"
devient :
SET  	      "nomF_IN=nom_de_ton_fichier_existant"

Si le fichier n'existe pas déjà cette séquence ne sert qu'une fois pour le créer, après actualisation de son nom.
En résumé le contenu L01; .....................L23 (sur 3 lignes) n'a d'intérêt que pour tester le batch et s'il n'existe pas déjà un fichier dans ton environnement.
Dans tous les cas il faudra mettre en commentaire (rem) cette séquence ou bien l'éliminer. Ensuite (une fois créé ou déjà existant) toute ligne ajoutée dans ce fichier nomF_IN par d'autres moyens (manuellement ou par programme autre que ce batch) sera permanente.

0