Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

10 réponses

1 2
Avatar
Stéphane [MS]
Bonjour,

Il existe une commande DirUse dont la syntaxe suivante vous permet presque
d'obtenir ce que vous cherchez :
diruse /* c:stations

Cdlt
Stéphane
http://blogs.msdn.com/spapp/default.aspx

"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
Gilles LAURENT
"Pascal TURDINE" a écrit dans le
message de news:45126f49$0$24477$
| Bonjour,

Bonjour,

| Sous WinXp, je voudrais avoir la taille des sous-répertoires d'un
| répertoire.

Ci-dessous le script Batch 'folderSize.cmd' permettant d'afficher la
taille d'un répertoire et de ses sous-répertoires. L'énumération des
sous-répertoires démarre à partir du dossier racine spécifié comme
argument.

+++ Usage
>folderSize C:Stations

-- Coupez ici : folderSize.cmd --

@echo off
setlocal enabledelayedexpansion

for /f "tokens=*" %%i in ('dir /s "%*" ^| findstr " fichier("') do (
set /a "line^=1
for /f "tokens=3*" %%j in ('echo %%i') do (
set data=%%j
if %%k. neq . set data=!data! %%k
)
if !line! == 1 (set folder=!data!) else (
echo !folder! = !data!
)
)

endlocal

-- Coupez ici : folderSize.cmd --

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Avatar
Pascal TURDINE
Bonjour et merci Gilles et Stéphane.

La commande {diruse} me retourne {'diruse' n'est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes}.

Par contre le script folderSize.cmd, c'est trop du feu ! Y'a plein d'options que je
connaissais pas.
C'est quoi le {"%*" ^} après le {dir /s ?}
Lorsque je lance la commande {dir /s "%*" ^| findstr " fichier("} au prompt, l'OS me
répond {Le fichier spécifié est introuvable}.

Sinon, y'a de ça. Bravo, ça le fait. Y'a un site, une adresse où je pourrais piocher
toutes ces docs sur les commandes ?
Heu, je vait être peut être pénible, mais je voudrais pas les sous-sous répertoires.
Uniquement, les sous-répértoires d'un répertoires. ça devient difficile, non ? Mais vu la
tronche du script, je pense que c'est à la portée. Je me trompe ?

Merci encore.
--

@+ "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
Gilles LAURENT
"Pascal TURDINE" a écrit dans le
message de news:45129d3a$0$24531$
| Bonjour et merci Gilles et Stéphane.

Bonjour,

| La commande {diruse} me retourne {'diruse' n'est pas reconnu en tant
| que commande interne ou externe, un programme exécutable ou un
| fichier de commandes}.

DirUse est un outil disponible dans les Support Tools Windows XP

| Par contre le script folderSize.cmd, c'est trop du feu ! Y'a plein
| d'options que je connaissais pas.

Hé hé ;-)

| C'est quoi le {"%*" ^} après le {dir /s ?}

%* représente tous les arguments transmis au batch
^ est un caractère d'échappement

| Lorsque je lance la commande {dir /s "%*" ^| findstr " fichier("}
| au prompt, l'OS me répond {Le fichier spécifié est introuvable}.

Au prompt, il faut supprimer le caractère d'échappement :
>dir /s | findstr " fichier("

| Heu, je vait être peut être pénible, mais je voudrais pas les
| sous-sous répertoires. Uniquement, les sous-répértoires d'un
| répertoires. ça devient difficile, non ? Mais vu la tronche du
| script, je pense que c'est à la portée. Je me trompe ?

Ci-dessous le script Batch 'folderSize2.cmd' permettant d'afficher la
taille des sous-répertoires directs d'un répertoire spécifié comme
argument. La taille des sous-répertoires directs inclut également la
taille des éventuelles sous-répertoires (principe de fonctionnement
identique à l'explorateur Windows)

+++ Usage
>folderSize2 C:Stations

-- Coupez ici : folderSize2.cmd --

@echo off
setlocal enabledelayedexpansion

:: lecture des sous-dossier du dossier racine
for /f "tokens=*" %%h in ('dir /b /a:d "%*" ^| findstr /v ".$"') 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 : folderSize2.cmd --

Toutefois, c'est quand même beaucoup plus simple (et rapide) en VBScript
:

+++ Usage
>cscript //nologo folderSize2.vbs C:Stations

-- Coupez ici : folderSize2.vbs --

Option Explicit

' déclaration des variables
Dim oFS, oRootFolder, oFolder
Dim colFolders

' initialisation des objets
Set oFS = CreateObject ("Scripting.FileSystemObject")
Set oRootFolder = oFS.GetFolder (wscript.arguments(0))
Set colFolders = oRootFolder.SubFolders

' affichage de la taille des sous-dossiers
For each oFolder in colFolders
WScript.Echo oFolder.Path & _
" = " & _
FormatNumber (oFolder.Size, 0, -1, 0, -1) & _
" octets"
Next

-- Coupez ici : folderSize2.vbs --

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Avatar
Gilles LAURENT
Bonsoir Jacques

| --- get-subdir.ps1 ---
| $args[0]
| dir $args[0] |
| where {$_.PSIsContainer} |
| foreach {
| "{0,25} {1,12} octets" -f $_.name, ("$((dir $_.fullname |
| where {!$_.PSIsContainer} |
| measure length -sum).sum)" -replace "^$","0")
| }
| --- get-subdir.ps1 ---

Note : measure-object ;-)

Cela ne répond pas au cahier des charges ;-)
Seule la taille des répertoires est affichée par ce script PowerShell.
Si un répertoire contient un autre répertoire alors il est nécessaire de
calculer la taille totale de l'arborescence de répertoires comme le fait
l'explorateur de fichiers. Par exemple :

Soit l'arboresence suivante :
D:Folder : 5 octets
D:FolderSubFolder : 2 octets

Le script doit afficher le résultat suivant :
D:Folder = 7 octets

[HS]
Sur le forum VBScript US, j'ai eu affaire non pas à un Maoïste mais à
une personne de l'ancienne tribu des Whadya.
"Whad'ya know....that worked!" :-)
[/HS]

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Avatar
Jacques Barathon [MS]
"Gilles LAURENT" a écrit dans le message de news:

<...>
Note : measure-object ;-)


Oops, désolé. Dans mon profil je crèe des alias pour toutes les
commandelettes portant sur 'object' :

get-command -noun object | foreach {set-alias $_.Verb $_ -ea
silentlycontinue}

Du coup, j'ai l'habitude d'écrire 'measure' et j'ai oublié de corriger dans
mon script.

Cela ne répond pas au cahier des charges ;-)
Seule la taille des répertoires est affichée par ce script PowerShell.
Si un répertoire contient un autre répertoire alors il est nécessaire de
calculer la taille totale de l'arborescence de répertoires comme le fait
l'explorateur de fichiers. Par exemple :

Soit l'arboresence suivante :
D:Folder : 5 octets
D:FolderSubFolder : 2 octets

Le script doit afficher le résultat suivant :
D:Folder = 7 octets


J'ai mal interprété la demande suivante, alors:

<citation>
Heu, je vait être peut être pénible, mais je voudrais pas les sous-sous
répertoires.
Uniquement, les sous-répértoires d'un répertoires. ça devient difficile, non
?
</citation>

S'il faut calculer la taille de l'arborescence totale, il suffit d'ajouter
le paramètre -recurse au 'dir' (pas le premier: celui-ci ne fait que
recenser les répertoires de base, mais le deuxième: c'est celui-là qui
mesure la taille de chaque répertoire de base). Je redonne le script complet
corrigé:

--- get-subdir.ps1 ---
$args[0]
dir $args[0] |
where {$_.PSIsContainer} |
foreach {
"{0,25} {1,12} octets" -f $_.name, ("$((dir $_.fullname -recurse |
where {!$_.PSIsContainer} |
measure length -sum).sum)" -replace "^$","0")
}
--- get-subdir.ps1 ---

[HS]
Sur le forum VBScript US, j'ai eu affaire non pas à un Maoïste mais à
une personne de l'ancienne tribu des Whadya.
"Whad'ya know....that worked!" :-)


Fascinant :-) L'ethnologie urbaine est une discipline inépuisable!

[/HS]


Jacques

Avatar
Jean
S'il faut calculer la taille de l'arborescence totale, il suffit d'ajouter le
paramètre -recurse au 'dir'


... et -force pour les fichiers cachés ...


--- get-subdir.ps1 ---
$args[0]
dir $args[0] |
where {$_.PSIsContainer} |
foreach {
"{0,25} {1,12} octets" -f $_.name, ("$((dir $_.fullname -recurse |
where {!$_.PSIsContainer} |
measure length -sum).sum)" -replace "^$","0")
}
--- get-subdir.ps1 ---


ou pour donner le total :

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

Amicalement,

--
Jean - JMST
Belgium

Avatar
Jean
Y'a un site, une adresse où je pourrais piocher
toutes ces docs sur les commandes ?


Voir ici :

http://groups.google.be/group/microsoft.public.fr.scripting/msg/47f43a1964ba99bb?dmode=source&hl=fr

par ex :

http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/ntcmds.mspx?mfr=true

Amicalement,

--
Jean - JMST
Belgium

Avatar
Jean
par ex :


http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/ntcmds.mspx?mfr=true


http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true

--
Jean - JMST
Belgium

Avatar
Jacques Barathon [MS]
"Jean" a écrit dans le message de news:

S'il faut calculer la taille de l'arborescence totale, il suffit
d'ajouter le paramètre -recurse au 'dir'


... et -force pour les fichiers cachés ...


Bien vu.

ou pour donner le total :

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


Il faudrait ajouter également le '-replace "^$","0"' pour les cas où
l'arborescence ne contient aucun fichier, sinon bien vu bis :-)

Jacques


1 2