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:
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:
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 pièce(s) jointe(s)
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:
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 :
Pièce jointe 301288
le résultat :
Pièce jointe 301293
transcription en power shell
Citation:
Envoyé par
ericlm128
Ç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.