A voir également:
- Batch : Récupère la taille des différents dossiers
- Fichier batch - Guide
- Batch converter - Télécharger - Photo & Graphisme
- Batch renommer une partie du nom de plusieurs fichiers ✓ - Forum Autoit / batch
- Renommer tous les fichiers d'un dossier - Forum Windows
- Color batch - Forum Autoit / batch
1 réponse
Bonjour,
Pour résoudre le problème, je dirais qu'il faut "retarder" la variable size comme ceci :
setlocal enabledelayedexpansion FOR /D %%d IN (*) DO ( FOR /R "." %%s IN (*) DO ( SET /A size+=%%~zs ) SET doss=%%~nd ) ECHO !doss! : !size! o SET /A size_ko=!size!/1024 ECHO !doss! : ~%size_ko% Ko SET /A size_mo=%size_ko%/1024 ECHO !doss! : ~%size_mo% Mo SET /A size_go=%size_mo%/1024 ECHO !doss! : ~%size_go% Go
-
Tu pourrais aussi simplifier le script comme ceci :
setlocal enabledelayedexpansion FOR /R "." %%s IN (*) DO SET /A size+=%%~zs ECHO !CD! : %size% o SET /A size_ko=%size%/1024 ECHO !CD! : ~%size_ko% Ko SET /A size_mo=%size_ko%/1024 ECHO !CD! : ~%size_mo% Mo SET /A size_go=%size_mo%/1024 ECHO !CD! : ~%size_go% Go
Bonjour,
Ne pas oublier qu'en cas d'un dossier de plus de 2 Go on va se faire planter par la limite de calcul à 2^31.
On doit alors avant le calcul limiter l'affichage de la taille en octets à 9 chiffres:
SET/A "SIZE9=%SIZE:~0,9%"
Si je veux pinailler à l'extrême et afficher le nombre avec des décimales, il va falloir en outre que je teste la longueur de la chaîne en octets pour appliquer le bon format de sortie après division selon par exemple qu'on est dans la tranche 1 à 10, 10 à 99 ou 100 à 999 Mo.
Pour ceux qui ne sont pas d'accord, essayez au hasard avec un dossier de 5,50 Go:
que je n'aurai a fortiori aucun moyen de diviser par 1024