Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
[RÉSOLU] Saut de ligne tous les n caractères
Auteur Message
Répondre en citant
Message [RÉSOLU] Saut de ligne tous les n caractères 
Bonjour à tous,

je viens vers vous pour un coup de main sur un fichier batch que je ne vois pas comment faire.

J'ai un fichier sans extension (lisible avec un notepad) sur plusieurs lignes de plus de 1000 caractères et je souhaiterai faire un saut de ligne tous les 650 caractères jusqu'à la fin du fichier (qui compte plusieurs dizaines de millions de caractères). A savoir que si un saut de ligne est présent dans le fichier source, je souhaite réinitialiser le compteur et faire un saut de ligne 650 caractères après le retour à la ligne.

Un grand merci à quiconque peut m'aider.

cdt



Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message [RÉSOLU] Saut de ligne tous les n caractères 
Salut,

prenons un petit exemple pour comprendre ton problème :

on a par exemple 2 lignes de texte :

123456789123456789123
123456789123456789123

et tu veux couper cette ligne tous les 6 caractères (650) dans ton cas.

on commence donc à couper la premiere ligne tous les 6 caractères

123456
789123
456789

mais on fait quoi avec le 123 qui reste de la première ligne on l'íncrémente à la ligne suivante :

123123
456789
123456
789


ou on l'écrit tel qu'il est et on passe à la ligne suivante ? :

123
123456
789123
456789
123

Donne un petit exemple du fichier d'entrer et comment tu le veux en sortie.


Okay




______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Répondre en citant
Message [RÉSOLU] Saut de ligne tous les n caractères 
Bonjour,

le premier cas cité est la cas qui m’intéresse :

en entrée :

123456789123456789123
123456789123456789123

on commence donc à couper la première ligne tous les 6 caractères, on passe à la suivante comme suit :

123456
789123
456789
123456
789123
456789
123456
789123
456789

j'ai essayé avec un for, en vain..


grand merci



Répondre en citant
Message [RÉSOLU] Saut de ligne tous les n caractères 
Tu n'a pas répondu à ma question.

on fait quoi avec les fins de lignes qui n1ont pas 6 caractères ?

si j'ai:

123456789123456789123

j'aurai :

123456
789123
456789
123

je fais quoi avec 123 je l'incrémente en debut de ligne suivante ou je le laisse tel quel ?




______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Répondre en citant
Message [RÉSOLU] Saut de ligne tous les n caractères 
pour les lignes qui n'ont pas six caractères, on s'arrete quand on a plus de caractère,

mon besoin correspond donc bien à ce que tu viens d'écrire :

si j'ai:

123456789123456789123

j'aurai :

123456
789123
456789
123

merci à toi de ta réactivité en cette journée de samedi

cdt



Répondre en citant
Message [RÉSOLU] Saut de ligne tous les n caractères 
Flonox,
ce que je veux savoir c'est si il me reste 3 caractere au bout d'une ligne et que j'ai une autre ligne je fais quoi ??????

si il me reste 123 de la ligne 1

est ce qu'il faut cller ce 123 au debut de la 2eme ligne :

123123

ou laisser ce 123 tout seul sur une ligne et passer à la ligne suivante :

456789
123
123456
456789




______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Répondre en citant
Message [RÉSOLU] Saut de ligne tous les n caractères 
Excuse moi de ne pas avoir été clair sur ce point. Nous pouvons laisser le 123 seul. Je n'aurai normalement pas de problème, mon fichier d'entrée comporte 650 x n caractères par ligne.

J'ai essayé de gerer cela avec des variables, mais le soucis est q'une variable ne peut être alimentée que de 1024 caractères, et vu que mon fichier fait des milliers de caractères sur une même ligne, ca va pas...je ne sais plus quoi faire

Merci!



Répondre en citant
Message [RÉSOLU] Saut de ligne tous les n caractères 
salut,

il faut télécharger et utiliser l'outil gnu sed. le résultat sera instantané.
http://gnuwin32.sourceforge.net/

salut sacha Wink



Répondre en citant
Message [RÉSOLU] Saut de ligne tous les n caractères 
Voilà le batch qui te permet de faire ce que tu veux.

Avec les restrictions suivante :

- taille maximum d'une ligne = 8192 octets (limite de taille d'une variable d'environnement en bat)
- Temps d'éxecution ça péut prendre un peu de temps pour traiter un gros fichier.


Code:


:::CUT LINE
:::By SachaDee - 2013

@echo off&cls & color 17

:::le fichier à traiter et le  nb de caractères à découper de chaque ligne

set $fsource="test.txt"
set $nbchar=6

:::on détruit le fichier de sortie si il existe

if exist sortie.txt del sortie.txt

Echo TRAITEMENT EN COURS.... PATIENCE
setlocal enabledelayedexpansion enableextensions

for /f "delims=" %%a in ('type %$fsource%') do (
                                       set $Tstring=%%a
                                       set $liste650=
                                       set $c=0
                                       set $compteur=1
                                       call:decoupe)
CLS
echo Traitement termin‚
echo sortie.txt G‚ner‚
echo By SachaDee - 2013
goto:eof

:decoupe
if !$compteur! GTR 8192 (echo erreur ligne dépassant possible [!$compteur!]
                         pause
                         exit)
set $t=!$Tstring:~%$c%,1!
if not defined $t goto:end
set $liste650=!$liste650!!$t!
if !$compteur! equ %$nbchar% (echo !$liste650!>>sortie.txt
                    set $liste650=
                    set $compteur=1)
set /a $c+=1
set /a $compteur+=1
goto:decoupe

endlocal

:end
if defined $liste650 echo !$liste650!>>sortie.txt




Effectivement il existe SED (salut Temp Smile ) qui te permettrais de faire cela beaucoup plus vite.
Mais nous sommes sur un forum batch et donc je me devais de te donner une solution en bach (avec ses limitations, hèlas...)

Test ce batch et dis-moi si il est fonctionnel...

A+

Okay




______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Répondre en citant
Message [RÉSOLU] Saut de ligne tous les n caractères 
mais sed est 100% compatible avec le "batch" Razz



Répondre en citant
Message [RÉSOLU] Saut de ligne tous les n caractères 
Merci à tous de vos aides,

puis-je abuser et vous demander comment utiliser Sed pour mon besoin..

merci !



Répondre en citant
Message [RÉSOLU] Saut de ligne tous les n caractères 
oui pas de problème Wink

voici le code :

Code:
sed -n "s/.\{650\}/&\n/g;p" fichier_source > fichier_sortie.txt




Répondre en citant
Message [RÉSOLU] Saut de ligne tous les n caractères 
Bravo et merci, Sed est un bijou d'efficacité ! Merci pour ce petit bout de code qui m'aurait pris des heures. Vraiment bravo de votre réactivité !!



Répondre en citant
Message [RÉSOLU] Saut de ligne tous les n caractères 
Sujet résolu Wink




______________________________________________________


L'ignorance est un fléau qui engendre la haine et la mort
La connaissance est une arme qui surpasse toutes les autres
Partagez votre savoir, sinon il sera perdu à jamais
Message [RÉSOLU] Saut de ligne tous les n caractères 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch