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 :

Gérer les espaces des élèments via le boucle for [Batch]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut Gérer les espaces des élèments via le boucle for
    Bonjour,

    J'ai une partie de mon script que voici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    REM - generate index
    :generate_index
    %ls% -lln %pathname% > %pathname%\%def_i0%
    for /f "tokens=1,2,3,4,5,6,7,8,9* delims=, " %%a in (%pathname%\%def_i0%) do (
      echo %%a  %%b %%c  %%d          %%e %%f  %%g %%h %%i >> %pathname%\%def_i1%
      type %pathname%\%def_i1% | %findstr% -v "total def_i0.tmp" >> %pathname%\%def_i2%
      del %pathname%\%def_i0% %pathname%\%def_i1%
    )
    echo.
    echo =^> Save INDEX file: complete.
    echo.
    goto quit_program
    qui génère en sortie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    -rw-rw-rw-  1 0  0          119 Jan  18 00:07 01.txt 
    -rw-rw-rw-  1 0  0          70 Jan  18 00:07 02.txt
    Je souhaiterai obtenir l'affichage suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    -rw-rw-rw-  1 0  0          119 Jan  18 00:07 01.txt 
    -rw-rw-rw-  1 0  0           70 Jan  18 00:07 02.txt
    Est-il possible de justifié le contenu de la variable %%e et de l'espacer à une valeur donnée ?

  2. #2
    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

  3. #3
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    Merki

    L'exemple donné, je le comprends:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    @echo off
    set x=32000 
    set y=148  
    
    ::On place 8 espaces devant nos valeurs  
    set x=        %x% 
    set y=        %y%  
    
    ::On récupère les 8 derniers caractères de notre variables
    echo.X=%x:~-8%
    echo.Y=%y:~-8%
    Le soucis c'est que dans l'exemple, il y a 2 variables avec des valeurs différentes que mon script %%e correspondant à la taille du fichier.

    Si j'ai 15 fichiers, les tailles seront différentes mais la variable utilisée sera toujours la même par exemple:
    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
    set x=%e%
    set x=          %x%
    
    REM - generate index
    :generate_index
    %ls% -lln %pathname% > %pathname%\%def_i0%
    for /f "tokens=1,2,3,4,5,6,7,8,9* delims=, " %%a in (%pathname%\%def_i0%) do (
      echo %%a  %%b %%c  %%d %x:~-10% %%f  %%g %%h %%i >> %pathname%\%def_i1%
      type %pathname%\%def_i1% | %findstr% -v "total def_i0.tmp" >> %pathname%\%def_i2%
      del %pathname%\%def_i0% %pathname%\%def_i1%
    )
    echo.
    echo =^> Save INDEX file: complete.
    echo.
    goto quit_program
    L'espace entre 0 et 119 et 0 et 70 est généré:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    -rw-rw-rw-  1 0  0      119 Jan  18 00:07 01.txt 
    -rw-rw-rw-  1 0  0      70 Jan  18 00:07 02.txt
    mais le chiffre 70 n'est toujours pas aligné vers la droite

    Ou alors, il faudrait définir la largeur de la colonne afin de pouvoir aligner le texte mais il faut se tourner du coté de la commande sed

  4. #4
    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
    Par défaut
    En réalité c'est aligné !
    Essaie de faire un "type" de ton fichier de sortie et regarde si l'alignement est correct.

    Ou sinon tu remplace les espaces par des 0 et tu test !

    Si tu ouvre ton fichier avec notepad, Selon la police que tu utilise ça ne sera effectivement pas aligné.

    Un autre test que tu peux faire, est cette boucle qui représente exactement ta situation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    @echo off
    setlocal enabledelayedexpansion enableextensions
    
    set x=1 2 34 246 33 1567 2 15674
    for %%a in (%x%) do (set x=          %%a
                                      echo -rw-rw-rw-  1 0  0 !x:~-10! JAN %time%
                                      echo -rw-rw-rw-  1 0  0 !x:~-10! JAN %time%>>sortie.txt)
    
    :end
    endlocal
    pause
    Tu vois qu'à l'écran, ou si tu fais un c'est aligné.

    Fais ce test et envoie le résultat !

    Amicalement

  5. #5
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    Coucou,

    j'ai trouvé en utilisant la commande ls.exe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    REM - generate index
    :generate_index
    %ls% -lln -F --full-time %pathname% > %pathname%\%def_i0%
    for /f "tokens=1,2,3,4,5,6,7,8,9,10,11* delims=, " %%a in (%pathname%\%def_i0%) do (
    set x=          %%e
    echo %%a  %%b %%c  %%d !x:~-11! %%f %%g %%h %%i %%j %%k >> %pathname%\%def_i1%
    type %pathname%\%def_i1% | %findstr% -v "total def_i0.tmp" >> %pathname%\%def_i2%
    del %pathname%\%def_i0% %pathname%\%def_i1%
    )
    echo.
    echo =^> Save INDEX file: complete.
    echo.
    goto quit_program
    et ça fonctionne que ce soit dans notepad et/ou geany et/ou vim c'est aligné comme je le voulais.

    Un grand merci pour ton aide

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

Discussions similaires

  1. Gérer les espaces entre éléments BIRT
    Par geforce dans le forum BIRT
    Réponses: 0
    Dernier message: 04/11/2013, 16h49
  2. [2.3.1] Gérer les espaces entre éléments
    Par peuplier dans le forum BIRT
    Réponses: 8
    Dernier message: 01/11/2013, 19h09
  3. [XL-2010] Gérer les suppressions d'éléments dans une collection et une double boucle
    Par Rayanea dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/10/2013, 09h08
  4. Opérations sur des répertoires via la boucle for
    Par kinder_pingui dans le forum Linux
    Réponses: 6
    Dernier message: 17/08/2009, 09h22
  5. Comment gérer les espaces blancs?
    Par Lambo dans le forum XML/XSL et SOAP
    Réponses: 10
    Dernier message: 16/05/2003, 09h44

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