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 :

Formater l'affichage en sortie d'une liste de fichiers


Sujet :

Scripts/Batch

  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 Formater l'affichage en sortie d'une liste de fichiers
    Bonjour,

    Je souhaite lister tous les fichiers d'un répertoire en ayant l'affichage suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    98458 Aug 16 09:39:09 2010 fichier1.xxx
    22586 Aug 16 09:39:35 2010 fichier2.xxx
    En sachant que la date affichée est la date de dernière modification des fichiers.

    Est-ce possible en Batch ?

    Merci d'avance de vos réponses

  2. #2
    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
    Bon j'avance doucement, voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    @echo off
    
    if exist index.txt del /q index.txt
    
    for %%i in (*.*) do echo %%~zi %%~ti %%i >> index.txt
    et voici en sortie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    108 07/03/2011 00:34 fichier1.txt 
    9 06/03/2011 02:39 fichier2.txt
    70656 17/12/2010 16:31 fichier3.txt 
    3691 06/03/2011 02:09 fichier4.txt
    Je souhaiterai obtenir un formatage tel que celui-ci:
    3691 Aug 16 09:39:29 2010 fichier1.txt
    Un petit coup de main ? Merci

  3. #3
    Membre Expert Avatar de Drizzt [Drone38]
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2004
    Messages
    1 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 001
    Par défaut
    Bonjour,

    En batch pour modifier le format de la date c'est pas le mieux.
    Je te conseille de passer par un script vbs que tu généreras (au préalable ou à l'exécution) et appeleras dans ton batch.

    Tu as un exemple dans la FAQ ici :
    Exemple VBS

    Sinon c'est pas non plus infaisable en batch, tu as juste à décomposer ta ligne pour récuperer jour, mois, année et convertir le mois numéral en mois littéral et ressortir le tout dans l'ordre que tu souhaites.

  4. #4
    Membre Expert Avatar de Drizzt [Drone38]
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2004
    Messages
    1 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 001
    Par défaut
    Tiens voici une solution à partir de ton fichier index.txt.

    Je te laisse le soin de grouper avec ce que tu as fait pour écrire directement le bon résultat dans index.txt.

    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
    @echo off
    setlocal enabledelayedexpansion
    
    set mois=""
    set tabMois=JanFebMarAprMayJunJulAugSepOctNovDec
    
    for /f "tokens=1,2,3,4,5,6 delims=/ " %%a in (index.txt) do (
        set /a n=%%c*3-3
        call :getMonth !n!
        echo %%a !mois! %%b %%e %%d %%f
    )
    
    goto :EOF
    
    :getMonth
    set mois=!tabMois:~%1,3!
    goto :EOF
    Edit à 17h32 : Petite simplification pour ne conserver qu'un seul for.

  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
    Bonjour,

    Tout d'abord merci beaucoup de ton aide. J'ai adapté le script à ma convenance et cela fonctionne mais j'obtiens tout même le message suivant en invite de commande:
    Nombre non valide. Les constantes numériques doivent être soit décimales (17), soit hexadécimales (0x11), soit octales (021).
    Voici le code:
    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
    19
    20
    21
    @echo off
    setlocal enabledelayedexpansion
    
    if exist index.txt del /q index.txt
    
    for %%i in (*.*) do echo %%~zi %%~ti %%i >> index.txt
    
    set mois=""
    set tabMois=JanFebMarAprMayJunJulAugSepOctNovDec
    
    for /f "tokens=1,2,3,4,5,6 delims=/ " %%a in (index.txt) do (
        set /a n=%%c*3-3
        call :getMonth !n!
        echo %%a !mois! %%b %%e %%d %%f
    )
    
    goto :EOF
    
    :getMonth
    set mois=!tabMois:~%1,3!
    goto :EOF
    J'ai une deuxième question concernant le formatage des caractères, le fichier de sortie est le suivant:
    417 08/09/2012 17:08 makeindex.bat
    1536 14/07/2009 03:06 skeleton.dll
    2373 20/05/2012 18:23 skeleton.txt
    Il y a un décalage sur la première ligne car la taille du fichier est plus petite. Je ne parviens pas à trouver de solutions pour y remédier.

    J'ai besoin d'un petit coup de main s'il vous plaît ?

    Merci

  6. #6
    Membre Expert Avatar de Drizzt [Drone38]
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2004
    Messages
    1 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 001
    Par défaut
    Boudiou !! Une réponse 1an et demi après, j'espère que le projet n'était pas urgent

    Pour ta première question, le message d'erreur est probablement du à une ligne particulière dans ton index.txt (genre la première ou la dernière ?).
    Sinon avec des echos qui vont bien tu devrais facilement trouver la ligne incriminée si ce ne saute pas aux yeux à la lecture de ton index.txt


    Pour la seconde, j'ai répondu à une question similaire il n'y a pas très longtemps. Si tu veux avoir un nombre fixe de caractères, tu ajoutes le nombre de blancs nécessaires pour ta taille minimale à %%a et tu tronques au nombre de caractères de ta colonne.

    Ex:
    Taille minimale = 1, Taille colonne = 6
    417 devient 417___
    1536 devient 1536__
    Et tu affiches les 6 premiers caractères à chaque fois :
    417___
    1536__

    A dans 2ans

  7. #7
    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
    2 ans après

    Tout d'abord, merci de ta réponse.

    Je comprends ton explications mais pour la mise en pratique, c'est une autre histoire.

    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    %date% devient %date:~0,2%
    J'affiche à partir de la position 0 les 2 caractères suivants.

    En revanche, la variable du script est écrite autrement %%a ?

Discussions similaires

  1. affichage des éléments d'une liste horizontalement
    Par progamer54 dans le forum JSF
    Réponses: 7
    Dernier message: 16/04/2007, 10h34
  2. affichage caractères chinois dans une liste
    Par turpinx dans le forum Langage
    Réponses: 1
    Dernier message: 09/09/2006, 19h13
  3. Eviter l'affichage des éléments d'une liste déroulante
    Par auriolbeach dans le forum Access
    Réponses: 1
    Dernier message: 28/02/2006, 07h50
  4. Affichage des mois dans une liste déroulante
    Par Le Rebel dans le forum Langage
    Réponses: 15
    Dernier message: 20/02/2006, 13h37
  5. Format de données en sortie d'une procédure stockée
    Par Martin Sylvie dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 22/02/2005, 12h02

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