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

Scripts/Batch Discussion :

Supprimer ligne vide d'un fichier .txt


Sujet :

Scripts/Batch

  1. #1
    Membre actif
    Inscrit en
    Janvier 2006
    Messages
    1 218
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 218
    Points : 257
    Points
    257
    Par défaut Supprimer ligne vide d'un fichier .txt
    Bonjour,
    J'ai un fichier txt, avec des lignes et des lignes renseignés.
    Je souhaite un fichier éventuellement exécuter un fichier batch qui supprime les lignes vides.
    Quelqu'un connait-il la manipulation ?
    Cordialement.

  2. #2
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut
    Citation Envoyé par leloup84 Voir le message
    Bonjour,
    J'ai un fichier txt, avec des lignes et des lignes renseignés.
    Je souhaite un fichier éventuellement exécuter un fichier batch qui supprime les lignes vides.
    Quelqu'un connait-il la manipulation ?
    Cordialement.

    Voici un exemple qui peut supprimer les lignes vides dans le même fichier batch :
    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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    @echo off
     
     
    Set "InputFile=%~f0"
     
    echo Le fichier d'entree : "%InputFile%"
     
     
    Set "OutputFile=%~dp0%~n0.txt"
     
    echo(
     
    echo Le fichier de sortie : "%OutputFile%"
     
    echo(
     
    echo Appuyez sur une touche pour enlever les lignes vides dans ce fichier batch
    pause>nul
     
    Call:RemoveEmptyLines "%InputFile%" "%OutputFile%"
     
    Start "" "%OutputFile%"
     
    Exit /b
     
    ::*****************************************************************************
    :RemoveEmptyLines <InputFile> <OutputFile>
     
    for /f "delims= tokens=*" %%x in ('Type "%~1"') do echo %%x >> "%~2"
     
    Exit /b
    ::****************************************************************************
    Normalement après l’exécution de ce code vous allez obtenir quelque chose comme ça dans un fichier texte
    @echo off
    Set "InputFile=%~f0"
    echo Le fichier d'entree : "%InputFile%"
    Set "OutputFile=%~dp0%~n0.txt"
    echo(
    echo Le fichier de sortie : "%OutputFile%"
    echo(
    echo Appuyez sur une touche pour enlever les lignes vides dans ce fichier batch
    pause>nul
    Call:RemoveEmptyLines "%InputFile%" "%OutputFile%"
    Start "" "%OutputFile%"
    Exit /b
    ::*****************************************************************************
    :RemoveEmptyLines <InputFile> <OutputFile>
    for /f "delims= tokens=*" %%x in ('Type "%~1"') do echo %%x >> "%~2"
    Exit /b
    ::*****************************************************************************

  3. #3
    Membre actif
    Inscrit en
    Janvier 2006
    Messages
    1 218
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 218
    Points : 257
    Points
    257
    Par défaut
    Je ne comprends pas tout à fait la manipulation demandé.
    Je colle votre code dans un fichier nommé sup_ligne.bat
    Et quand je vais exécuter ce fichier cela va enlever les lignes vides de monde fichier test.txt ?

  4. #4
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut
    Citation Envoyé par leloup84 Voir le message
    Je ne comprends pas tout à fait la manipulation demandé.
    Je colle votre code dans un fichier nommé sup_ligne.bat
    Et quand je vais exécuter ce fichier cela va enlever les lignes vides de monde fichier test.txt ?
    On va simplifier la manip
    copier et coller ce code Supp_lignes_Vides.bat
    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
    15
    16
    17
    18
    @echo off 
    Title Supprimer les lignes vides dans un fichier
    Rem Ici on définit le chemin du fichier d'entrée
    Set "InputFile=c:\test\testfile.txt" 
    If Not exist "%InputFile%" color 0c & echo "%InputFile%" not found
    pause>nul & exit /b
    Rem Ici on définit le fichier de sortie
    Set "OutputFile=c:\test\testfile2.txt"  
    Rem ici on appelle notre fonction avec 2 paramètres le fichier d'entrée et le fichier de sortie afin de supprimer les lignes vides
    Call:RemoveEmptyLines "%InputFile%" "%OutputFile%" 
    Rem on ouvre le fichier de sortie
    Start "" "%OutputFile%" 
    Exit /b 
    ::***************************************************************************** 
    :RemoveEmptyLines <InputFile> <OutputFile> 
    for /f "delims= tokens=*" %%x in ('Type "%~1"') do echo %%x >> "%~2" 
    Exit /b 
    ::*****************************************************************************

  5. #5
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut

    Voici une autre version par glisser et déposer le fichier à convertir sur le batch
    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
    15
    16
    17
    18
    19
    20
    21
    22
    @echo off 
    Mode con cols=80 lines=3 & color 9E 
    Title Supprimer les lignes vides dans un fichier par glisser et deposer
    Rem Ici on définit le chemin du fichier d'entrée par glisser et déposer
    If [%1]==[] goto :Error
    Set "InputFile=%1" 
    Rem Ici on définit le fichier de sortie
    Set "OutputFile=%InputFile%.txt"  
    echo  Traitement du fichier "%InputFile%"
    Rem ici on appelle notre fonction avec 2 paramètres le fichier d'entrée  et le fichier de sortie afin de supprimer les lignes vides
    Call:RemoveEmptyLines "%InputFile%" "%OutputFile%" 
    Rem on ouvre le fichier de sortie
    Start "" "%OutputFile%" 
    Exit /b 
    ::***************************************************************************** 
    :RemoveEmptyLines <InputFile> <OutputFile> 
    for /f "delims= tokens=*" %%x in ('Type "%~1"') do echo %%x >> "%~2" 
    Exit /b 
    ::***************************************************************************** 
    :Error
    color 0c & echo( & echo   The input file is not found ! Please drag and drop a file to be processed ...
    pause>nul & exit /b

  6. #6
    Membre actif
    Inscrit en
    Janvier 2006
    Messages
    1 218
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 218
    Points : 257
    Points
    257
    Par défaut
    Je ne comprends pas.
    Ce code ne donne rien. J'ai un fichier test.txt avec des sauts de lignes.
    J'ai un fichier en .bat avec le code ci-dessous. En quand je fais exécuter le .bat manuellement. J'ai une fenêtre noir qui s'ouvre, je fais entrée mais aucun fichier test2.txt ne se créé.
    Je cherche vraiment à ce que çà se fasse automatiquement.
    L'idée c'est que j'ai un fichier qui est généré chaque jour depuis une application en .txt avec des saut de lignes, un batch vient enlever ces sauts de lignes avant qu'une autre tâche envoi se fichier ailleurs propre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    @echo off 
    Title Supprimer les lignes vides dans un fichier
    Rem Ici on définit le chemin du fichier d'entrée
    Set "InputFile=C:\Nouveau dossier\test.txt" 
    If Not exist "%InputFile%" color 0c & echo "%InputFile%" not found
    pause>nul & exit /b
    Rem Ici on définit le fichier de sortie
    Set "OutputFile=C:\UNouveau dossier\test2.txt"  
    Rem ici on appelle notre fonction avec 2 paramètres le fichier d'entrée et le fichier de sortie afin de supprimer les lignes vides
    Call:RemoveEmptyLines "%InputFile%" "%OutputFile%" 
    Rem on ouvre le fichier de sortie
    Start "" "%OutputFile%" 
    Exit /b 
    ::***************************************************************************** 
    :RemoveEmptyLines <InputFile> <OutputFile> 
    for /f "delims= tokens=*" %%x in ('Type "%~1"') do echo %%x >> "%~2" 
    Exit /b 
    ::*****************************************************************************

  7. #7
    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
    Good luck Mr Hoo !

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

  8. #8
    Membre actif
    Inscrit en
    Janvier 2006
    Messages
    1 218
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 218
    Points : 257
    Points
    257
    Par défaut
    sachadee, pourquoi ce commentaire ?

  9. #9
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut
    Citation Envoyé par leloup84 Voir le message
    sachadee, pourquoi ce commentaire ?
    Il me taquine
    Alors tu es ou dans ce script ?
    Tu n'as pas testé la dernière version de ce script avec glisser et déposer un fichier sur le script batch ?
    Comme dans cette image :

  10. #10
    Membre actif
    Inscrit en
    Janvier 2006
    Messages
    1 218
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 218
    Points : 257
    Points
    257
    Par défaut
    J'obtiens ceci :
    Nom : batch.png
Affichages : 1963
Taille : 12,3 Ko

    Après je cherche vraiment à ce que la suppression des lignes se fassent en automatique.
    Pas en manuel, du coup le glisser je ne sais pas si çà convient.
    Comme indiqué dans un message précédent, l'idée, un fichier .txt avec des lignes se dépose dans un dossier à 17h.
    A 17h30 la tâche btach supprime les lignes.
    A 18h le fichier repart ailleurs.

    C'est vraiment cette 2ème étape qu'il me manque, la suppression des lignes en automatique dans le fichier.

  11. #11
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut

    Le fichier texte à convertir se trouve toujours dans le même dossier ?
    un seul fichier ou bien plusieurs fichiers texte dans le même dossier ?
    C'est quoi le chemin de ce dossier ?

  12. #12
    Membre actif
    Inscrit en
    Janvier 2006
    Messages
    1 218
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 218
    Points : 257
    Points
    257
    Par défaut
    Oui
    Normalement il y a un voir 2 maximum en même temps.
    Pour mon test le dossier se trouve sur mon bureau un dossier nommé "Nouveau dossier"

  13. #13
    Membre actif
    Inscrit en
    Janvier 2006
    Messages
    1 218
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 218
    Points : 257
    Points
    257
    Par défaut
    Existe-t-il la possibilité de vous transmettre un exemple de fichier .txt que je génère et qui doit être modifié ?

  14. #14
    Membre actif
    Inscrit en
    Janvier 2006
    Messages
    1 218
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 218
    Points : 257
    Points
    257
    Par défaut
    test.txttest.txt

    Pardon j'avais pas vu qu'on pouvait le faire directement. Ci-joint donc un exemple.

  15. #15
    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
    Fait un copier coller de ce code et sauve le dans un fichier.bat
    ensuite dépose à l'aide de la souris ton fichier test.txt sur ce fichier.bat
    et tu auras en sortie un fichier sortie.bat sans ligne vide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    @echo off
    setlocal enabledelayedexpansion
    (for /f "delims=" %%a in (%1) do (
         set "$ligne=%%a"
         if not "!$ligne!"=="" echo %%a)
    ) >sortie.txt
    Attention tu dois faire un copier coller siinon le code ne marchera pas il y a un caractère spécial dans la condition if. Il
    apparaîtra lorsque tu faras le coller dans le notepad ou autre.

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

  16. #16
    Membre actif
    Inscrit en
    Janvier 2006
    Messages
    1 218
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 218
    Points : 257
    Points
    257
    Par défaut
    Bonjour,
    J'ai bien copié votre code.
    J'ai ensuite fait un glisser de mon test.txt vers mon fichier.bat

    Cela créé bien un sortie.txt

    En revanche dans mon fichier les seuls que j'ai ce n'est pas les données du fichier de base sans les lignes vides mais le chemin d'où est mon fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Users\MD.FMI.000\Desktop\Nouveau dossier\test.txt

  17. #17
    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
    Essaye comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    @echo off
    setlocal enabledelayedexpansion
    (for /f "delims=" %%a in ('type %1') do (
         set "$ligne=%%a"
         if not "!$ligne!"=="" echo %%a)
    ) >sortie.txt
    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  18. #18
    Membre actif
    Inscrit en
    Janvier 2006
    Messages
    1 218
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 218
    Points : 257
    Points
    257
    Par défaut
    Ok çà marche.
    Dernier point cela demande un glisser (donc une intervention manuelle)
    Hors comme expliqué dans un message précédent, l'idée c'était que le fichier txt soit généré dans un dossier.
    Avec le batch automatique, qu'il soit remis en forme.
    Et qu'avec une autre manipulation que je maîtrise cette fois, soit copié dans une autre dossier.

    La partie que je ne maîtrise pas, c'est vraiment, la suppression en automatique des lignes vides du txt. Là j'ai une partie de ma réponse mais cela demande une intervention humaine.

  19. #19
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2013
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Décembre 2013
    Messages : 176
    Points : 405
    Points
    405
    Par défaut
    Salut,


    D'après une petite recherche il semble que at.exe fasse le boulot.

    Citation Envoyé par at /?
    La commande AT planifie l'exécution des commandes et programmes sur l'ordinateur à une date ou heure spécifiée[...]
    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Users\xx>at 17:30 Supp_lignes_Vides.bat
    At accède au planificateur de tâche de Windows, que tu peux retrouver avec Explorer dans le panneau de configuration. A partir de là tu peux également activer, désactiver, ajouter de nouvelles tâches planifiées.


    Pour que le fichier de commandes n'attende plus de fichiers par glisser-déposer il faut que tu remplaces les %1 par "lecteur\chemin\fichier.ext" (à adapter au contexte) .

    Bon courage.

  20. #20
    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 leloup84 Voir le message
    Ok çà marche.
    Dernier point cela demande un glisser (donc une intervention manuelle)
    Hors comme expliqué dans un message précédent, l'idée c'était que le fichier txt soit généré dans un dossier.
    Avec le batch automatique, qu'il soit remis en forme.
    Et qu'avec une autre manipulation que je maîtrise cette fois, soit copié dans une autre dossier.

    La partie que je ne maîtrise pas, c'est vraiment, la suppression en automatique des lignes vides du txt. Là j'ai une partie de ma réponse mais cela demande une intervention humaine.
    Tu peux comme proposer par @deathman8683 faire une tâche planifiée et tu peux remplacer %1 dans mon code par le nom du fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    @echo off
    setlocal enabledelayedexpansion
    
    set "$fichier=chemin/vers/ton/fichier.txt"
    
    (for /f "delims=" %%a in ('type "%$fichier%"') do (
         set "$ligne=%%a"
         if not "!$ligne!"=="" echo %%a)
    ) >sortie.txt
    Et voilà !
    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

Discussions similaires

  1. [Batch] Supprimer lignes vides d'un fichier texte
    Par leloup84 dans le forum Scripts/Batch
    Réponses: 7
    Dernier message: 03/10/2018, 20h04
  2. [XL-2007] Supprimer la dernière ligne vide d'un fichier txt avec vba
    Par nyepalo dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 26/06/2015, 09h31
  3. Supprimer lignes de texte ouverture fichier txt
    Par remi-l dans le forum Scilab
    Réponses: 3
    Dernier message: 17/01/2015, 15h15
  4. Supprimer la dernière ligne vide d'un fichier txt
    Par petit rabot dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 08/12/2011, 12h15
  5. Supprimer ligne vide d'un fichier .txt
    Par Stagiette dans le forum C#
    Réponses: 6
    Dernier message: 26/01/2010, 17h11

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