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 :

liste infos sur une arborescence nom répertoire,nom fichier,date création,date d'accès,date d'écrit,taille [Batch]


Sujet :

Scripts/Batch

  1. #1
    Membre à l'essai
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2015
    Messages : 13
    Points : 17
    Points
    17
    Par défaut liste infos sur une arborescence nom répertoire,nom fichier,date création,date d'accès,date d'écrit,taille
    Bonjour,
    Voici un code batch qui fonctionne presque bien car il permet d'obtenir ceci :

    repertoire fichier date Création date d'accès date d'écriture
    M:\2 - Run\Revue\ Plan.xlsx 09/03/2016 09/03/2016 09/03/2016
    M:\2 - Run\Revue\ Revue.docx 09/03/2016 09/03/2016 09/03/2016
    M:\2 - Run\Revue\ qualité.pptx 09/03/2016 09/03/2016 09/03/2016
    M:\2 - Run\Documentation\Service\ PVE.doc 04/08/2015 04/08/2015 04/08/2015

    mais la taille de chaque fichier n'est pas listée.

    le code du batch :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    @echo off
    
    :: v22 suppression des espaces dans la ligne de commande qui écrit les résultat dans le log
    
    :: pour récupérer dans le fichier de résultat les caractères avec accent
    chcp 28591 > nul
     
    :: parametrage du répertoire à analyser
    set repertoire="M:\2 - Run"
    
    :: creation du répertoire contenant les résultats en dessous du répertoire d'où est exécuté le script
    if exist log goto creation_log
    if not exist log mkdir log 
    :creation_log
    
    
    :: récupération année sur 4 caractères
    set annee=%date:~6,3% 
    
    :: mise en paramètre du mois sur 2 caractères
    set mois=%date:~3,2% 
    
    :: mise en paramètre du jour sur 2 caractères
    set jour=%date:~0,2% 
    
    :: recupération heure et minutes sur 2 caractères chacun
    for /f "tokens=1,2,3 delims=:" %%a in ('time /t') do set heure=%%a
    for /f "tokens=1,2,3 delims=:" %%a in ('time /t') do set minute=%%b
    
    SET madate=%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%_%heure%%minute%
    
    :: parametrage du fichier qui contiendra le résultat
    set export=listing_fichier
    
    :: parametrage du fichier qui contiendra le résultat
    set export=listing_fichier
    
    :: ecriture en tête de colonne dans le fichier de résulat et creation du fichier de résultat
    echo repertoire ; fichier ; date Création ; date d'accès ; date d'écriture  > log\%export%_%madate%.csv
    
    :: Permet d'utiliser des variables dans les boucles for
    setlocal enableDelayedExpansion
    
    echo .:: Listage des fichiers du repertoire %repertoire% ::.
     
    echo -----------début---------------------
    :: On parcours la liste de tous les fichiers
    for /r %repertoire% %%i in (*) do (
    :: On stock le chemin complet du fichier
    set fichier=%%i
    :: On stock le nom de fichier
    set fichier=%%~nxi
    :: On Affiche le répertoire courant
    set repertoire=%%~dpi
    :: On récupère et on stock la date de création du fichier
    for /f "tokens=1 delims= " %%c in ('dir "%%~dpi" /T:c ^| find "%%~nxi"') do set dateC=%%c
    :: On récupère et on stock la date de dernier accès du fichier
    for /f "tokens=1 delims= " %%a in ('dir "%%~dpi" /T:a ^| find "%%~nxi"') do set dateDA=%%a
    :: On récupère et on stock la date de dernière écriture du fichier
    for /f "tokens=1 delims= " %%w in ('dir "%%~dpi" /T:w ^| find "%%~nxi"') do set dateDE=%%w
    :: On récupère et on stock la taille du fichier en octets
    for /f  %%t in ('dir "%%~dpi"') do set taille=%%~zt
    :: Pour afficher à l'écran les informations séparées par des | (annulés par un accent circonflexe), il faut enlever '>NUL' dans la ligne ci-dessous
    echo !repertoire! ^| !fichier! ^| !dateC! ^| !dateDA! ^| !dateDE!^| !taille! > NUL
    :: On écrit les informations ligne après ligne dans le fichier listage.txt
    echo !repertoire!;!fichier!;!dateC!;!dateDA!;!dateDE!;!taille!>> log\%export%_%madate%.csv
    echo -------------------------------------
    )
     
    endlocal
     
     
    pause
    Voici un autre code qui affiche à l'écran la taille des fichiers, en octet
    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
    
    for /r "\" %%i in (*.*) do ( set taille=%%~zi 
    echo !taille!
    )
    
    endlocal
    
    pause
    Merci de m'aider à améliorer le code pour obtenir également la taille de chaque fichier.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 546
    Points : 1 084
    Points
    1 084
    Par défaut
    Bonjour, voilà la solution :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    @echo off
    
    :: v22 suppression des espaces dans la ligne de commande qui écrit les résultat dans le log
    
    :: pour récupérer dans le fichier de résultat les caractères avec accent
    chcp 28591 > nul
     
    :: parametrage du répertoire à analyser
    set repertoire="M:\2 - Run"
    
    :: creation du répertoire contenant les résultats en dessous du répertoire d'où est exécuté le script
    if exist log goto creation_log
    if not exist log mkdir log 
    :creation_log
    
    
    :: récupération année sur 4 caractères
    set annee=%date:~6,3% 
    
    :: mise en paramètre du mois sur 2 caractères
    set mois=%date:~3,2% 
    
    :: mise en paramètre du jour sur 2 caractères
    set jour=%date:~0,2% 
    
    :: recupération heure et minutes sur 2 caractères chacun
    for /f "tokens=1,2,3 delims=:" %%a in ('time /t') do set heure=%%a
    for /f "tokens=1,2,3 delims=:" %%a in ('time /t') do set minute=%%b
    
    SET madate=%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%_%heure%%minute%
    
    :: parametrage du fichier qui contiendra le résultat
    set export=listing_fichier
    
    :: parametrage du fichier qui contiendra le résultat
    set export=listing_fichier
    
    :: ecriture en tête de colonne dans le fichier de résulat et creation du fichier de résultat
    echo repertoire ; fichier ; date Création ; date d'accès ; date d'écriture  > log\%export%_%madate%.csv
    
    :: Permet d'utiliser des variables dans les boucles for
    setlocal enableDelayedExpansion
    
    echo .:: Listage des fichiers du repertoire %repertoire% ::.
     
    echo -----------début---------------------
    
    :: On parcours la liste de tous les fichiers
    for /r %repertoire% %%i in (*) do (
    
    :: On stock le chemin complet du fichier
    set fichier=%%i
    
    :: On stock le nom de fichier
    set fichier=%%~nxi
    
    :: On Affiche le répertoire courant
    set repertoire=%%~dpi
    
    :: On récupère et on stock la date de création du fichier
    for /f "tokens=1 delims= " %%c in ('dir "%%~dpnxi" /T:c') do set dateC=%%c
    
    :: On récupère et on stock la date de dernier accès du fichier
    for /f "tokens=1 delims= " %%a in ('dir "%%~dpnxi" /T:a') do set dateDA=%%a
    
    :: On récupère et on stock la date de dernière écriture du fichier
    for /f "tokens=1 delims= " %%w in ('dir "%%~dpnxi" /T:w') do set dateDE=%%w
    
    :: On récupère et on stock la taille du fichier en octets
    set taille=%%~zi
    
    :: Pour afficher à l'écran les informations séparées par des | (annulés par un accent circonflexe), il faut enlever '>NUL' dans la ligne ci-dessous
    echo !repertoire! ^| !fichier! ^| !dateC! ^| !dateDA! ^| !dateDE!^| !taille! > NUL
    
    :: On écrit les informations ligne après ligne dans le fichier listage.txt
    echo !repertoire!;!fichier!;!dateC!;!dateDA!;!dateDE!;!taille!>> log\%export%_%madate%.csv
    echo -------------------------------------
    )
     
    endlocal
     
     
    pause

  3. #3
    Membre à l'essai
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2015
    Messages : 13
    Points : 17
    Points
    17
    Par défaut solution code batch liste répertoire, nom fichier, date création,date accès,date écriture,taille en ko
    bonjour,

    Suite proposition de code de Barnabé, j'ai fait une adaptation et voici le code final qui fonctionne tout comme je voulais .

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    @echo off
    
    :: v22 suppression des espaces dans la ligne de commande qui écrit les résultat dans le log
    :: v24 modification de la boucle pour récupérer taille fichiers
    
    :: pour récupérer dans le fichier de résultat les caractères avec accent
    chcp 28591 > nul
    
    :: parametrage du répertoire à analyser
    set repertoire="M:\2 - Run"
    
    ::mise à zéro du compteur de boucles
    set n=0
    :: creation du répertoire contenant les résultats en dessous du répertoire d'où est exécuté le script
    if exist log goto creation_log
    if not exist log mkdir log 
    :creation_log
    
    
    :: récupération année sur 4 caractères
    set annee=%date:~6,3% 
    
    :: mise en paramètre du mois sur 2 caractères
    set mois=%date:~3,2% 
    
    :: mise en paramètre du jour sur 2 caractères
    set jour=%date:~0,2% 
    
    :: recupération heure et minutes sur 2 caractères chacun
    for /f "tokens=1,2,3 delims=:" %%a in ('time /t') do set heure=%%a
    for /f "tokens=1,2,3 delims=:" %%a in ('time /t') do set minute=%%b
    
    SET madate=%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%_%heure%%minute%
    
    :: parametrage du fichier qui contiendra le résultat
    set export=listing_fichier
    
    :: ecriture en tête de colonne dans le fichier de résulat et creation du fichier de résultat
    echo repertoire;fichier;date Création;date d'accès;date d'écriture;taille en ko> log\%export%_%madate%.csv
    
    :: Permet d'utiliser des variables dans les boucles for
    setlocal enableDelayedExpansion
    
    echo .:: Listage des fichiers du repertoire %repertoire% ::.
     
    echo -----------début---------------------
    
    :: On parcourt la liste de tous les fichiers
    for /r %repertoire% %%i in (*) do (
    set /a n=!n!+1
    :: On stock le chemin complet du fichier
    set fichier=%%i
    :: On stock le nom de fichier
    set fichier=%%~nxi
    :: On Affiche le répertoire courant
    set repertoire=%%~dpi
    :: On récupère et on stock la date de création du fichier
    for /f "tokens=1 delims= " %%c in ('dir "%%~dpi" /T:c ^| find "%%~nxi"') do set dateC=%%c
    :: On récupère et on stock la date de dernier accès du fichier
    for /f "tokens=1 delims= " %%a in ('dir "%%~dpi" /T:a ^| find "%%~nxi"') do set dateDA=%%a
    :: On récupère et on stock la date de dernière écriture du fichier
    for /f "tokens=1 delims= " %%w in ('dir "%%~dpi" /T:w ^| find "%%~nxi"') do set dateDE=%%w
    :: On récupère et on stock la taille du fichier en kilo octets. 
    set /a taille=%%~zi/1024
    :: Pour afficher à l'écran les informations séparées par des | (annulés par un accent circonflexe), il faut enlever '>NUL' dans la ligne ci-dessous
    echo !repertoire! ^| !fichier! ^| !dateC! ^| !dateDA! ^| !dateDE!^| !taille! > NUL
    :: On écrit les informations ligne après ligne dans le fichier listage.txt
    echo !repertoire!;!fichier!;!dateC!;!dateDA!;!dateDE!;!taille!>> log\%export%_%madate%.csv
    echo -----------------!n!------------------
    )
     
    endlocal
     
     
    pause
    pendant l'exécution :
    Nom : liste_fichiers1.JPG
Affichages : 1170
Taille : 19,7 Ko

    le résultat :
    Nom : liste_fichiers2.JPG
Affichages : 1192
Taille : 49,2 Ko

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 546
    Points : 1 084
    Points
    1 084
    Par défaut
    Ton code est un peu lent à cause des FIND que tu utilises dans les boucles FOR pour récupérer les 3 dates.

    Regarde la différence avec le code que j'avais proposé.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2015
    Messages : 13
    Points : 17
    Points
    17
    Par défaut
    bonjour Barnabé
    j'ai fait tourner le code que tu as proposé et il n'écrit pas les dates dans le fichier résultat. Ce qui ne correspond pas à mon besoin (voir titre de la discussion)
    Un autre moyen de le faire tourner plus rapidement serait d'enlever l'affichage écran du numéro de boucle. Mais le temps d’exécution n'est pas un critère important pour moi.

  6. #6
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 177
    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 177
    Points : 5 738
    Points
    5 738
    Par défaut
    Ça vous dirait pas de faire du Powershell ? Le problème serait résolu en 1 ligne et réalisé de façon rapide et fiable.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2015
    Messages : 13
    Points : 17
    Points
    17
    Par défaut transcription en power shell
    Citation Envoyé par ericlm128 Voir le message
    Ça vous dirait pas de faire du Powershell ? Le problème serait résolu en 1 ligne et réalisé de façon rapide et fiable.
    Bonjour Eric,
    Je suis partis sur du batch par facilité car j'arrive mieux à comprendre les lignes de code dans ce langage.
    oui je veux bien l'équivalent en powershell, qui a davantage d'avenir.
    L'inconvénient est que, dans notre organisation, l'exécution de .ps1 est impossible sur les postes de travail, il faut donc l'exécuter depuis un serveur. mais ce n'est pas une difficulté majeure.

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

Discussions similaires

  1. Réponses: 17
    Dernier message: 15/08/2010, 06h22
  2. Requete SQL sur une table dont le nom est dans une autre table
    Par orangepresse dans le forum Langage SQL
    Réponses: 3
    Dernier message: 29/09/2007, 14h32
  3. Infos sur une liste controle
    Par Portugal86 dans le forum MFC
    Réponses: 1
    Dernier message: 09/03/2007, 20h54
  4. Réponses: 6
    Dernier message: 08/02/2007, 15h41
  5. Réponses: 4
    Dernier message: 27/12/2006, 22h53

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