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 :

Retour chariot tous les N caractères [Batch]


Sujet :

Scripts/Batch

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 26
    Points : 18
    Points
    18
    Par défaut Retour chariot tous les N caractères
    Bonjour,

    Je cherche comment modifier le retour chariot dans un fichier qui présente une suite de caractères :

    60350;1;60351;1;60352;1;60353;1;60354;1;60355;1;60356;1;60357;1;60358;1;60359;1;60360;1;60361;1;60362;1;60363;1;60364;1;60365;1;60366;1;60367;1;60368;1;60369;1;60370;1;60371;1;60372;1;60373;1;60374;1;60375;1;60376;1;60377;1;60378;1;60379;1;60380;1;60381;1;60382;1;60383;1;60384;1;60385;1;60386;1;60387;1;60388;1;60389;1;60390;1;60391;1;60392;1;60393;1;60394;1;60395;1;60396;1;60397;1;60398;1;60399;1;60400;1;60401;1;60402;1;60403;1;60404;1;60405;1;60406;1;60407;1;60408;1;60409;1;60410;1;60411;1;60412;1;60413;1;60414;1;60415;1;60416;1;60417;1;60418;1;60419;1;60420 .....etc

    Je voudrai faire un retour chariot tous les 80 caractères.
    En cherchant sur les forums, j'ai trouvé un batch qui semble pouvoir faire ça :

    @echo Off
    setlocal enabledelayedexpansion
    CD "D:\temp\"
    set $fsource="TITI.txt"
    set $nbchar=80
    for /f "delims=" %%a in ('type %$fsource%') do (
    set $Tstring=%%a
    set $liste=
    set $c=0
    set $compteur=1
    call:decoupe)
    goto:eof
    :decoupe
    set $t=!$Tstring:~%$c%,1!
    if not defined $t goto:end
    set $liste=!$liste!!$t!
    if !$compteur! equ %$nbchar% (echo !$liste!>>sortie.txt
    set $liste=
    set $compteur=1)
    set /a $c+=1
    set /a $compteur+=1
    goto:decoupe
    endlocal
    :end
    if defined $liste echo !$liste!>>sortie.txt


    La première ligne est bien découpée à 80 caractères.
    Par contre, je ne comprends pas pourquoi toutes les suivantes sont découpées au 79e caractères ce qui décale complètement les données...
    Le résultat donne ça chez moi :

    60350;1;60351;1;60352;1;60353;1;60354;1;60355;1;60356;1;60357;1;60358;1;60359;1;
    60360;1;60361;1;60362;1;60363;1;60364;1;60365;1;60366;1;60367;1;60368;1;60369;1
    ;60370;1;60371;1;60372;1;60373;1;60374;1;60375;1;60376;1;60377;1;60378;1;60379;
    1;60380;1;60381;1;60382;1;60383;1;60384;1;60385;1;60386;1;60387;1;60388;1;60389
    ;1;60390;1;60391;1;60392;1;60393;1;60394;1;60395;1;60396;1;60397;1;60398;1;6039
    9;1;60400;1;60401;1;60402;1;60403;1;60404;1;60405;1;60406;1;60407;1;60408;1;604
    09;1;60410;1;60411;1;60412;1;60413;1;60414;1;60415;1;60416;1;60417;1;60418;1;60
    419;1;60420 .....etc

    alors que ce que je souhaite, c'est ça :

    60350;1;60351;1;60352;1;60353;1;60354;1;60355;1;60356;1;60357;1;60358;1;60359;1;
    60360;1;60361;1;60362;1;60363;1;60364;1;60365;1;60366;1;60367;1;60368;1;60369;1;
    60370;1;60371;1;60372;1;60373;1;60374;1;60375;1;60376;1;60377;1;60378;1;60379;1;
    60380;1;60381;1;60382;1;60383;1;60384;1;60385;1;60386;1;60387;1;60388;1;60389;1;
    60390;1;60391;1;60392;1;60393;1;60394;1;60395;1;60396;1;60397;1;60398;1;60399;1;
    60400;1;60401;1;60402;1;60403;1;60404;1;60405;1;60406;1;60407;1;60408;1;60409;1;
    60410;1;60411;1;60412;1;60413;1;60414;1;60415;1;60416;1;60417;1;60418;1;60419;1;
    60420 .....etc


    Pouvez vous m'expliquez ce qui cloche ?
    Merci pour votre aide.

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Test ceci

    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
    @echo off
    setlocal enabledelayedexpansion
     
    set source=titi.txt
    set destination=sortie.txt
    set splitlongueur=80
     
    (for /f "delims=" %%a in (%source%) do call :decoupe "%%a")>%destination%
    goto :eof
     
    :decoupe
    set txt=%~1
    if not defined txt goto :eof
    echo !txt:~,%splitlongueur%!
    call :decoupe "!txt:~%splitlongueur%!"
    goto :eof

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    Super !
    C'est exactement ce que je souhaitais.
    Trop fort !
    Merci.

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

Discussions similaires

  1. String avec retour à la ligne tous les '15' caractères
    Par Paprenelle dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 13/01/2017, 14h23
  2. String avec retour à la ligne tous les '100' caractères
    Par Portugues13 dans le forum Débuter avec Java
    Réponses: 16
    Dernier message: 05/06/2012, 17h16
  3. Retours chariot entre les balises HTML
    Par micfont999 dans le forum Langage
    Réponses: 3
    Dernier message: 09/10/2007, 19h45
  4. couper tous les 50 caractères
    Par franfr57 dans le forum Langage
    Réponses: 1
    Dernier message: 02/05/2007, 10h01
  5. Réponses: 2
    Dernier message: 16/08/2006, 14h47

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