Batch ecriture en ligne au lieu de colonne

orkal -  
dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour à toutes et à tous,

J'ai un probleme dans mon script batch. Celui-ci extrait correctement d'un fichier txt les données que je souhaite sauf qu'au lieu de les mettre sous la forme A;B;C;D;E, il me les mets sous forme de colonne...

le code:

for /f "tokens=2* delims==" %%i in ('type Log.txt ^| findstr /i /c:"="') do (
if not %%i== 0 echo %%i %%j >> End.txt
)

Comment lui dire de les ecrire les uns à la suite des autres?

Je vous remercie.

orkal

8 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    hello
    en ajoutant le texte à une variable
    C:> type f2.txt
    a
    b
    c
    d
    e
    
    C:> aa
    a;b;c;d;e
    
    C:> type aa.bat
    @echo off
    
    setlocal enableDelayedExpansion
    set x=
    for /f "tokens=1" %%a in ('type f2.txt') do (
    if not "!x!" == "" set c=;
    set x=!x!!c!%%a
    )
    echo %x%
    
    C:>
    
    1
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    on definit un caratctère délimiteur avec delims=+
    on supprime l'espace dans le texte avec set z=!z: =!
    C:> type f2.txt
    A
    B
    C
    D/ E
    F/ G
    C:>
    C:> aa
    A;B;C;D/E;F/G
    
    C:>
    C:> type aa.bat
    @echo off
    
    setlocal enableDelayedExpansion
    set x=
    for /f "delims=+ tokens=1" %%a in ('type f2.txt') do (
    set z=%%a
    set z=!z: =!
    if not "!x!" == "" set c=;
    set x=!x!!c!!z!
    )
    echo %x%
    
    1
  3. vincentdu76
     
    Sinon pour reprendre la réponse de Flashy Joe :

    for /f "tokens=2* delims==" %%i in ('type Log.txt ^| findstr /i /c:"="')
    do (
      if not %%i== 0 echo ^-n %%i %%j >> End.txt
    )
    
    


    Il faut rajouter un ^ avant le -n.

    Je crois que ça peut marcher...
    1
  4. Flachy Joe Messages postés 2303 Statut Membre 261
     
    Salut,
    il suffit de supprimer les sauts de lignes générés automatiquement par la commande echo en lui passant l'argument -n :
    for /f "tokens=2* delims==" %%i in ('type Log.txt ^| findstr /i /c:"="')
    do (
      if not %%i== 0 echo -n %%i %%j >> End.txt
    )
    

    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. orkal
     
    J'ai déjà tenté le -n, ça ne marche pas, ça le prend en caractère et il est donc présent sur le fichier txt.

    T'as une autre idée?

    Merci en tout cas
    0
  7. orkal
     
    Super !!!
    Ca marche, merci beaucoup dubcek
    Un dernier point.
    Mon fichier txt est du type
    A
    B
    C
    D/ E
    F/ G

    Avec ta methode, ça me mets A;B;C;D/;F/;
    Et j'aimerai A;B;C;D/E;F/G

    Edit: si je supprime "manuellement" les espaces entre les / et les lettre, ça marche correctement. Donc cela revient à chercher comment supprimer les espaces dans le fichier txt. Ou bien, poser une condition pour dire que quand il y a un "/", on ajoute le morceau suivant(qui est supprimé ici)...

    Tu as une idée?

    Merci en tout cas :)

    orkal
    0
  8. orkal
     
    Genial ça marche :)

    Derniere petite colle:

    J'ai deux bat qui fonctionne correctement chacun à la suite de l'autre, mais je n'arrive pas à les mettre dans un seul .bat . Pour une raison obscure, ils ne veulent pas en former qu'un....

    Une idée?

    Merci dubcek :)

    orkal
    0
    1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
       
      y pas de raison...
      vérifier des goto qui ont le même nom, par ex.
      0
  9. orkal
     
    Je n'ai pas de goto, dans aucun des deux bats...
    le premier bat se connecte via un ftp, recupere un fichier
    le second traite ce fichier
    Il marche tout les deux tres bien maintenant, mais lorsque je les mets l'un à la suite de l'autre.... marche pas

    Le code:
    @echo off
    echo IP?
    set /P ip=
    ftp -n -d -s:session.txt %ip%
    quit

    en fait, apres la commande ftp, aucune commande n'est prise en compte (il ne quitte pas comme je lui demande...)
    0
    1. orkal
       
      C'est résolu. Il fallait simplement quitter le ftp en le precisant dans le session.txt :)

      Merci beaucoup dubcek !!!!!!
      0
    2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
       
      quit est une commande ftp, il faut mettre le quit dans le fichier session.txt
      0