OVH Cloud OVH Cloud

Taille d'un répertoire en .cmd

18 réponses
Avatar
Pascal TURDINE
Bonjour,
Sous WinXp, je voudrais avoir la taille des sous-répertoires d'un répertoire.
Dans l'explorateur, si je déplace la souris sur le nom d'un répertoire, au bout de
quelques secondes, il m'affiche sa taille totale, ainsi que les quelques sous répertoires.
Je voudrais reproduire cela dans un batch et avoir à l'écran une sortie du style
rép1 = 1 000 octet(s)
répa = 12 345 octets(s)
.
.
.
repx = 9 867 octet(s)
Je suis pour l'instant en train de batailler avec des FOR, des DIR et des FIND sans
arriver à ce résultat.
Je suis même à l'écoute d'un .VBS éventuel.

Voici le contenu mon .CMD (il s'apelle taillerep.cmd ;- ) :
*-* DEBUT *-*
if exist taillerep.log del taillerep.log
for /d %%d in (*.*) do dir /s c:\stations\%%d|find "fichier(s)"|find /v "fichier(s)
">>taillerep.log
for /d %%d in (*.*) do dir /s c:\stations\%%d|find "Répertoire"|find /v "$">>taillerep.log
edit taillerep.log
*-* FIN *-*

Merci d'avance de vos idées ou de vos liens.

--

@+ "8~} PaKaL

8 réponses

1 2
Avatar
Jean
Il faudrait ajouter également le '-replace "^$","0"' pour les cas où
l'arborescence ne contient aucun fichier


ou en typant la sortie de la propriété Sum en entier :

#---8<---get-dirsize.ps1---8<---
$args[0]+" "+
[int](((dir $args[0] -recurse -force -include $args[1])|measure-object
Length -Sum).Sum)+
" octets"
#---8<---get-dirsize.ps1---8<---

... mais ... bien vu :-)

Amicalement,

--
Jean - JMST
Belgium

Avatar
Jean
#---8<---get-dirsize.ps1---8<---
$args[0]+" "+
[int](((dir $args[0] -recurse -force -include $args[1])|measure-object
Length -Sum).Sum)+
" octets"
#---8<---get-dirsize.ps1---8<---


#---8<---get-dirsize.ps1---8<---
$args[0]+" "+
[int](((dir $args[0] -recurse -force)|measure-object Length
-Sum).Sum)+
" octets"
#---8<---get-dirsize.ps1---8<---

--
Jean - JMST
Belgium

Avatar
Jean
ou en typant la sortie de la propriété Sum en entier


mal vu :-) ... il faudra bien un long :

#---8<---get-dirsize.ps1---8<---
$args[0]+" "+
[long](((dir $args[0] -recurse -force)|measure-object Length
-Sum).Sum)+
" octets"
#---8<---get-dirsize.ps1---8<---

Amicalement,

--
Jean - JMST
Belgium

Avatar
Dagor
Bonsoir,

j'ai modifié le script de Gilles qui est super intéressant !

Je trouve que c'est mieux avec une boite de dialogue plus remplie ;=))

Pardon pour cette intrusion !!!


Cordialement

Yves

"Pascal TURDINE" a écrit dans le message
de news: 45126f49$0$24477$
Bonjour,
Sous WinXp, je voudrais avoir la taille des sous-répertoires d'un
répertoire.
Dans l'explorateur, si je déplace la souris sur le nom d'un répertoire, au
bout de
quelques secondes, il m'affiche sa taille totale, ainsi que les quelques
sous répertoires.
Je voudrais reproduire cela dans un batch et avoir à l'écran une sortie
du style
rép1 = 1 000 octet(s)
répa = 12 345 octets(s)
.
.
.
repx = 9 867 octet(s)
Je suis pour l'instant en train de batailler avec des FOR, des DIR et des
FIND sans
arriver à ce résultat.
Je suis même à l'écoute d'un .VBS éventuel.

Voici le contenu mon .CMD (il s'apelle taillerep.cmd ;- ) :
*-* DEBUT *-*
if exist taillerep.log del taillerep.log
for /d %%d in (*.*) do dir /s c:stations%%d|find "fichier(s)"|find /v
"fichier(s)
">>taillerep.log
for /d %%d in (*.*) do dir /s c:stations%%d|find "Répertoire"|find /v
"$">>taillerep.log
edit taillerep.log
*-* FIN *-*

Merci d'avance de vos idées ou de vos liens.

--

@+ "8~} PaKaL





Avatar
Pascal TURDINE
Bonjour et merci à tous en ce lundi de retour au taf.
Je ne m'attendais pas à tant de réponses, preuve que mon problème n'est pas unique.
Quoiqu'il en soit, j'ai ma réponse grâce à votre participation.
Voici donc mon ultime script qui me convient tout à fait et qui répond exactement à ma
recherche :

-- Coupez ici : folderSize3.cmd --
@echo off
setlocal enabledelayedexpansion

echo.&&echo Calcul de la taille des sous-dossiers
if %1~ == ~ (
echo d'un dossier. Donner en paramètre le nom d'un dossier
echo Ex : %0 %ProgramFiles%
) else (
echo du dossier %*
for /f "tokens=*" %%h in ('dir /b /a:d "%*"') do (
for /f "tokens=*" %%i in ('dir /a /s "%*%%h" ^| find "fichier("') do (
set line=%%i
)
for /f "tokens=3*" %%j in ('echo !line!') do (
echo %*%%h = %%j %%k
)
)
)

endlocal
-- Coupez ici : folderSize3.cmd --

J'ai préféré encore le .cmd :
- je n'ai pas besoin d'extensions supplémentaires pour l'exécuter (cf PowerShell)
- je n'ai pas besoin de rajouter un .cmd pour l'exécuter (cf .vbs avec {cscript //nologo
folderSize2.vbs C:Stations} pour l'exécuter.
- il prend en compte les variables d'environnement (%userprofile%, %programfiles%, ....)
en paramètres que ne prend pas VBS

C'est vrai que j'ai hésité avec le vbs car très rapide et simple

Merci encore de votre participation, j'ai bien progressé et appris encore plus sur le
langage de commande de Windows.
Au fait, dans Vista, j'ai lu qu'il allait encore évoluer pour permettre aux admin de
pouvoir scripter un max. Il n'a toujours par reçu de nom, le langage de commande de Vista
?

--

@+ "8~} PaKaL

"Pascal TURDINE" a écrit dans le message de news:
45126f49$0$24477$
| Bonjour,
| Sous WinXp, je voudrais avoir la taille des sous-répertoires d'un répertoire.
| Dans l'explorateur, si je déplace la souris sur le nom d'un répertoire, au bout de
| quelques secondes, il m'affiche sa taille totale, ainsi que les quelques sous
répertoires.
| Je voudrais reproduire cela dans un batch et avoir à l'écran une sortie du style
| rép1 = 1 000 octet(s)
| répa = 12 345 octets(s)
| .
| .
| .
| repx = 9 867 octet(s)
| Je suis pour l'instant en train de batailler avec des FOR, des DIR et des FIND sans
| arriver à ce résultat.
| Je suis même à l'écoute d'un .VBS éventuel.
|
| Voici le contenu mon .CMD (il s'apelle taillerep.cmd ;- ) :
| *-* DEBUT *-*
| if exist taillerep.log del taillerep.log
| for /d %%d in (*.*) do dir /s c:stations%%d|find "fichier(s)"|find /v "fichier(s)
| ">>taillerep.log
| for /d %%d in (*.*) do dir /s c:stations%%d|find "Répertoire"|find /v
"$">>taillerep.log
| edit taillerep.log
| *-* FIN *-*
|
| Merci d'avance de vos idées ou de vos liens.
|
| --
|
| @+ "8~} PaKaL
|
|
|
Avatar
Jacques Barathon [MS]
"Pascal TURDINE" a écrit dans le message
de news: 4517f289$0$20246$
<...>
J'ai préféré encore le .cmd :
- je n'ai pas besoin d'extensions supplémentaires pour l'exécuter (cf
PowerShell)
- je n'ai pas besoin de rajouter un .cmd pour l'exécuter (cf .vbs avec
{cscript //nologo
folderSize2.vbs C:Stations} pour l'exécuter.
- il prend en compte les variables d'environnement (%userprofile%,
%programfiles%, ....)
en paramètres que ne prend pas VBS

C'est vrai que j'ai hésité avec le vbs car très rapide et simple

Merci encore de votre participation, j'ai bien progressé et appris encore
plus sur le
langage de commande de Windows.
Au fait, dans Vista, j'ai lu qu'il allait encore évoluer pour permettre
aux admin de
pouvoir scripter un max. Il n'a toujours par reçu de nom, le langage de
commande de Vista
?


Il n'y a pas d'évolution majeure du langage de commande standard sous Vista.
Aucune raison de lui donner un nouveau nom.

Il était prévu d'intégrer Windows PowerShell à Vista, ce qui n'a pu se faire
pour des problèmes de synchronisation entre les deux développements.
PowerShell sera intégré comme console d'administration pour les futurs
produits serveurs (Exchange, MOM, etc) et devrait être intégré à Windows
dans une future version du système. Entre-temps on pourra télécharger
PowerShell depuis le site web de Microsoft et l'installer sur tout système
XP ou supérieur. L'installation sera configurable et administrable pour les
besoins d'une entreprise qui voudrait le déployer sur de nombreux postes
et/ou serveurs.

Jacques

Avatar
Gilles LAURENT
"Pascal TURDINE" a écrit dans le
message de news:4517f289$0$20246$
| Bonjour et merci à tous en ce lundi de retour au taf.

Bonjour,

| Voici donc mon ultime script qui me convient tout à fait et qui
| répond exactement à ma recherche :

[...]

| J'ai préféré encore le .cmd :
| - je n'ai pas besoin de rajouter un .cmd pour l'exécuter (cf .vbs
| avec {cscript //nologo folderSize2.vbs C:Stations} pour l'exécuter.

Pour fixer l'environnement d'exécution :
>cscript //H:CScript

Puis ensuite, tout simplement :
>folderSize2.vbs C:Stations

| - il prend en compte les variables d'environnement (%userprofile%,
| %programfiles%, ....) en paramètres que ne prend pas VBS

>folderSize2.vbs "%ProgramFiles%"

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Avatar
Pascal TURDINE
| Bonjour,
|

| Pour fixer l'environnement d'exécution :
| >cscript //H:CScript
|
| Puis ensuite, tout simplement :
| >folderSize2.vbs C:Stations
|
|
| >folderSize2.vbs "%ProgramFiles%"
|
| --
| Gilles LAURENT
| Me contacter : http://cerbermail.com/?zoTY7ZkLcD
|

Merci, cool, ça marche au poil

--

@+ "8~} PaKaL
1 2