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 :

Diviser fichier texte [Batch]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Octobre 2016
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2016
    Messages : 65
    Par défaut Diviser fichier texte
    Bonjour,

    J'ai besoin de découper mon fichier source toutes les 10 lignes et extraire chaque 10 lignes dans un fichier résultat.

    J'ai utilisé le code BATCH de hackoofr récupéré sur un autre post que j'ai un peu modifié pour mon utilisation :
    Code BATCH : 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
    @echo off
     
    setlocal EnableDelayedExpansion
    set src=src.txt
    set limit=9
    set linecounter=1
     
    set name=rslt
    set filenamecounter=1
    set extension=.txt
     
    for /f "tokens=1,2 delims=/" %%a in ('type %src%') do (
    	set splitfile=!name!!filenamecounter!!extension!
    	if !linecounter! gtr !limit! (
    		set /a filenamecounter=!filenamecounter! + 1
    		set linecounter=1
    		echo created !splitfile!
    	)
    	echo %%a>> !splitfile!
     
    	set /a linecounter=!linecounter! + 1
     
    )

    Donc j'ai actuellement un fichier source avec 60 lignes :
    ligne 1
    ligne 2
    ligne 3
    ligne 4
    [...]
    ligne 58
    ligne 59
    ligne 60
    Et avec le script, mes fichiers résultats sont les suivants :
    rslt1.txt :
    ligne 1
    ligne 2
    ligne 3
    ligne 4
    ligne 5
    ligne 6
    ligne 7
    ligne 8
    ligne 9
    ligne 10


    rslt2.txt :
    ligne 11
    ligne 12
    ligne 13
    ligne 14
    ligne 15
    ligne 16
    ligne 17
    ligne 18
    ligne 19


    rslt3.txt :
    ligne 20
    ligne 21
    ligne 22
    ligne 23
    ligne 24
    ligne 25
    ligne 26
    ligne 27
    ligne 28


    [...]
    rslt7.txt :
    ligne 56
    ligne 57
    ligne 58
    ligne 59
    ligne 60
    A la fin de chaque fichier résultat, j'ai une ligne vide, je me demande si le problème peut venir de la.

    Merci par avance pour vos réponses

  2. #2
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Octobre 2016
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2016
    Messages : 65
    Par défaut
    Après pas mal de test, il fallait juste que je mette la ligne ci-après au dessus de ma boucle :
    Code BATCH : Sélectionner tout - Visualiser dans une fenêtre à part
    set /a linecounter=!linecounter! + 1

    Si ça peut aider, voici mon script complet :

    Code BATCH : 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
    @echo off
     
    setlocal EnableDelayedExpansion
    set src=src.txt
    set limit=10
    set linecounter=1
     
    set name=rslt
    set filenamecounter=1
    set extension=.txt
     
    for /f "tokens=1,2 delims=/" %%a in ('type %src%') do (
    	set splitfile=!name!!filenamecounter!!extension!
    	echo !linecounter!
    	set /a linecounter=!linecounter! + 1
    	if !linecounter! gtr !limit! (
    		set /a filenamecounter=!filenamecounter! + 1
    		set linecounter=1
    		echo created !splitfile!
     
    	)
    	echo %%a>> !splitfile!
    )

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut

    Vous pouvez aussi le faire avec un glisser et déposer du fichier texte sur le batch avec ce code :
    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
    Title Splitting file by drag and drop by Hackoo 2018
    SetLocal EnableDelayedExpansion
    set limit=10
    set file=%~1
    set lineCounter=1
    set filenameCounter=1
    for %%a in (%file%) do (
        set "name=%%~na"
        set "extension=%%~xa"
    )
    Call :Delete_Old_Files
    for /f "tokens=* delims=" %%a in ('Type "%file%"') do (
        set splitFile=!name!!filenameCounter!!extension!
        set /a lineCounter+=1
        if !lineCounter! gtr !limit! (
            set /a filenameCounter+=1
            set lineCounter=1
            echo Created !splitFile!
        )
        echo %%a>>!splitFile!
    )
    Pause>nul & Exit
     
    :Delete_Old_Files
    for /f "tokens=* delims=" %%a in ('Type "%file%"') do (
        set splitFile=!name!!filenameCounter!!extension!
        set /a filenameCounter+=1
        If exist !splitFile! Del !splitFile!
    )
    Set filenameCounter=1
    Exit /b

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. diviser un fichier texte sous windows
    Par amoula91 dans le forum Scripts/Batch
    Réponses: 18
    Dernier message: 19/04/2022, 12h48
  2. Réponses: 1
    Dernier message: 12/02/2003, 09h36
  3. [VB6] Ecrire/Modifier/Effacer ds un fichier text-4 Chs/Lg
    Par Jonathan_Korvitch dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 24/12/2002, 18h54
  4. Importer des fichiers textes délimités
    Par Invité dans le forum Outils
    Réponses: 2
    Dernier message: 23/09/2002, 13h56
  5. Instruction pour créer un fichier text ???
    Par Soulsurfer dans le forum Langage
    Réponses: 2
    Dernier message: 06/08/2002, 11h17

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