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 :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
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
Merci de m'aider à améliorer le code pour obtenir également la taille de chaque fichier.
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
Partager