IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

Retirer tous les line feed d'un document


Sujet :

Windows

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Technicien Help Desk
    Inscrit en
    Janvier 2016
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Janvier 2016
    Messages : 23
    Points : 27
    Points
    27
    Par défaut Retirer tous les line feed d'un document
    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.

    Quand j'exécute un script çà me coupe la ligne où il y a les feed line et donc après parfois çà cause des erreurs.
    Exemple si je dois appliquer une multiplication sur une colonne


    Voilà un exemple de ce que j'ai dans le document original
    Vu avec bloc notes
    Nom : lineFeed.PNG
Affichages : 554
Taille : 7,3 Ko

    Si je l'ouvre avec nopad++ par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    "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"
    Si vous pouvez m'aider çà serait sympa.
    Merci d'avance pour l'aide que vous pourrez m'apporter.

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Pour commencer, il faut être absolument certain de ce avec quoi tu bosses, donc il serait intéressant de voir ce que donne ton fichier dans un éditeur hexadécimal.

    Si on prend au pied de la lettre ce que tu dit, par contre, ça voudrait dire que tu veux supprimer tous les LF ('\n' = 0x0A) qui ne suivent pas un CR ('\r' = 0x0D) (car il faut laisser les CRLF intacts sinon tu auras une seule ligne dans ton document).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Technicien Help Desk
    Inscrit en
    Janvier 2016
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Janvier 2016
    Messages : 23
    Points : 27
    Points
    27
    Par défaut
    Bonjour Médinoc

    Le document sur lequel je bosse est créé automoatiquement. C'est le résultat d'une requête sql.

    Des utilisateurs ont mis des saut de ligne dans des colonnes depuis le programme.
    Du coup, les sauts de lignes sont enregistrés et présents dans le document sur lequel je dois faire des modifiaction avant d'intégrer les données sur une autre base de données.

    La solution à mon problème srait de trouver le moyen de refirer tous les LF (seulement les LF) mais de garder intact les CRLF.

    J'ai essayé ce code en code asci 10 pour line feed mais çà ne marche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    @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
    )
    Tu aurais une idée de comment je dois m'y prendre?
    Merci d'avance pour les conseils tu m'apporteras

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Un bête programme en C devrait pouvoir faire l'affaire, qui lirait le fichier caractère par caractère, mais garderait le caractère précédent en mémoire. Et si le dernier caractère lu est un LF et que le précédent n'est pas un CR, on saute l'étape "écrire le caractère dans le fichier de sortie"...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    Hello,

    Une solution toute simple :

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    @echo off & cls
     
    Set "$c=1"
    setlocal enabledelayedexpansion
     
    (for /f "delims=" %%a in (input.txt) do (
      if !$c!==1 (
        set $l=%%a
        set /a $c+=1
        ) else (
        echo !$l!%%a
        set "$c=1"
      )
    ))>sortie.txt

    On ne s'intèresse pas de savoir si on a un LF ou un CR.

    On incrèmente juste un compteur pour chaque ligne. Si la valeur du compteur = 1 on garde la variable si il est à 2 on lie la variable avec la nouvelle ligne
    et on reset le compteur à 1.

    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Cela ne suppose-t-il pas que toutes les lignes contiennent exactement un (1) caractère LF à supprimer ? Je doute que cela soit garanti dans le fichier...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Technicien Help Desk
    Inscrit en
    Janvier 2016
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Janvier 2016
    Messages : 23
    Points : 27
    Points
    27
    Par défaut
    Merci sachadee

    je vais tester et je te dis si çà marche pour toi

    Bonne journée et à bientôt

  8. #8
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Cela ne suppose-t-il pas que toutes les lignes contiennent exactement un (1) caractère LF à supprimer ? Je doute que cela soit garanti dans le fichier...
    Effectivement Medinoc !

    Je mes suis basé sur l'exemple fourni.

    Mais même si il y en a plus c'est adaptable ! (pour autant que ça soit toujours pareil, pour chaque ligne)

    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  9. #9
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 191
    Points : 28 070
    Points
    28 070
    Par défaut
    la solution la plus simple reste encore à convertir tous les CF/LF en un caractère spécifique suffisamment spécial pour que l'on ait pas de chance de le rencontrer dans le reste du texte. Le but : cacher les LF des CR/LF
    Convertir tous les LF restant en rien, espace, point-virgule, autre ...
    Reconvertir le caractère spécifique en CR/LF.
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  10. #10
    Nouveau membre du Club
    Femme Profil pro
    Technicien Help Desk
    Inscrit en
    Janvier 2016
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Janvier 2016
    Messages : 23
    Points : 27
    Points
    27
    Par défaut
    Merci sachadee


    Je viens de tester ton code, il retire bien les line feed.
    Mais s'il y a des ligne sans line feed çà j'ai une erreur dans le document résultat

    Résultat après exécution du script
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    "2K45.23 NEW";"ARC CA 125 REAGENT 400 TESTS ";"4";"0";"103 777"	;"B/400";"";""
    "2K45.28 NEW";"ARC CA 125 REAGENT 100 TEST ";"4";"0";"30 652";"UNITE";"";"TD 30021091000   0%"
    "2K46.01"	;"ARC ANTI TG CALIBRATOR ";"4";"0";"11 626";"UNITE";"";""
    "2K46.10"	;"ARC ANTI TG CONTROL";"4";"0";"8 483";"UNITE";"";"""2K46.25";"ARC ANTI TG RGT 100 TEST 
    ";"4";"0";"26 872";"UNITE";"";"""2K47.01";"ARC ANTI TPO CALIBRATOR

    J'essaye de voir comment arranger çà

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/04/2014, 14h08
  2. [E-03] Macro qui se lance tous les jours sans ouvrir le document excel ?
    Par doublenico dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/10/2008, 11h06
  3. [VB.NET][2.0]retirer en une fois tous les objets d'un panel
    Par Golzinne dans le forum Windows Forms
    Réponses: 5
    Dernier message: 14/03/2006, 16h06
  4. Trouver tous les objets d'un certain type dans un document?
    Par kobe dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 03/11/2005, 18h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo