Supprimer des line feed dans des colonnes

DelNC Messages postés 2360 Statut Membre -  
DelNC Messages postés 2360 Statut Membre -
Bonjour à tous et toutes

Je viens vers vous car j'ai un gros problème et je n'arrive pas à le résoudre.
Je me suis rendue compte que dans le documents sur lequel je dois faire des scripts il y a des line feed dans certaines colonnes.

Quand j'exécute un script çà me coupe la ligne où il y a les feed line et donc après çà cause des erreurs.

Si j'ouvre mon document avec nopad++ dans les lignes où il y a des line feed j'ai

2K45.23";"ARC CA 125
";"4";"0";"103";"2222"
"2K45.28";"ARC CA 12
";"4";"0";"30" ;"412"
"2K46.01";"ARC
" ;"4";"440";"11 626"
"2K46.10";"ARC TG
";"4";"740";"8 483"


au lieu de ceci (même lignes sans les line feed)

2K45.23";"ARC CA 125";"4";"0";"103";"2222"
"2K45.28";"ARC CA 12 ";"4";"0";"30" ;"412"
"2K46.01";"ARC " ;"4";"440";"11 626"
"2K46.10";"ARC TG ";"4";"740";"8 483"


J'ai essayer de supprimer les LF présents dans les colonnes mais je dois garder les CRLF

Voilà ce que j'ai essayé
@echo off
setlocal enabledelayedexpansion
for /F "delims=" %%a in (articles.txt) do (
set a=%%a
set a=!a: char(10)=!
echo !a!
echo !a! >>resultat.txt
)


Si vous avez une idée de commet je dois procéder, un coup de main serait la bienvenue.

Merci d'avance pour votre aide.

2 réponses

  1. Utilisateur anonyme
     
    Salut.

    Il serait largement plus simple de le faire en AutoIt.
    Je sais le faire.

    Je remplace @LF (c'est une macro AutoIt) par "" : ce qui correspond à une suppression.

    Bref, es-tu d'accord de le faire en AutoIt ?

    ++
    0
    1. DelNC Messages postés 2360 Statut Membre 2 010
       
      Bonjour tonton_83

      je ne connais pas du tout le AutoIt.
      De plus, il faut que j'exécute une suite de script pour formater le document avant de réaliser une insertion dans la database.
      0
    2. Utilisateur anonyme
       
      Dommage pour toi

      Peut-être qu'un expert en batch aura la solution et viendra t'aider.

      @++
      0
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    hello
    on teste si ligne ne termine pas par ", on la concatène avec la ligne suivante
    C:> cc
    "2K45.23";"ARC CA 125";"4";"0";"103";"2222"
    "2K45.28";"ARC CA 12 ";"4";"0";"30" ;"412"
    "2K46.01";"ARC " ;"4";"440";"11 626"
    "2K46.10";"ARC TG ";"4";"740";"8 483"

    C:> type cc.bat
    @echo off
    echo [^^^"]$>f2
    set l2=
    setlocal enabledelayedexpansion
    for /F "delims=" %%a in (fichier.txt) do (
    set l=%%a
    echo !l!| findstr /r /G:f2>NUL
    if !ERRORLEVEL! EQU 0 (
    set l2=!l!
    ) else (
    echo !l2!!l!
    set l2=
    )
    )
    0
    1. DelNC Messages postés 2360 Statut Membre 2 010
       
      Bonjour dubcek

      je ne comprends pas pourqui tu mets dans le else
      else (
      echo !l2!!l!
      set l2=
      )


      De plus, je n'arrive pas à afficher le résultat du script :(
      Je retourne à mes autres scripts

      @+
      0
    2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
       
      echo !l2!!l! on affche la ligne précédente et la courante sur une seule ligne
      set l2= on efface l2 si l y a une ligne entière qui suit on affichera que l1
      0
    3. DelNC Messages postés 2360 Statut Membre 2 010
       
      Ok

      Merci
      :)
      0