Je souhaite utiliser la ligne de commande Windows pour calculer la taille de tous les fichiers d'un dossier et d'un sous-dossier. Je le ferais normalement en cliquant avec le bouton droit de la souris sur le dossier et en cliquant sur "Propriétés", mais je veux pouvoir le faire en ligne de commande.
Quelle commande puis-je utiliser?
Vous voudrez utiliser dir /a/s
pour qu'il inclue tous les fichiers, y compris les fichiers système et cachés. Cela vous donnera la taille totale que vous désirez.
Vous pouvez utiliser PowerShell!
$totalsize = [long]0
Get-ChildItem -File -Recurse -Force -ErrorAction SilentlyContinue | % {$totalsize += $_.Length}
$totalsize
Cela revient à travers le répertoire en cours entier (en ignorant les répertoires qui ne peuvent pas être entrés) et en résumant la taille de chaque fichier. Ensuite, il affiche la taille totale en octets.
Une doublure compactée:
$totalsize=[long]0;gci -File -r -fo -ea Silent|%{$totalsize+=$_.Length};$totalsize
Sur ma machine, cela semble légèrement plus rapide qu'un dir /s /a
, car il n'imprime pas les informations de chaque objet à l'écran.
Pour l'exécuter à partir d'une invite de commande normale:
powershell -command "$totalsize=[long]0;gci -File -r -fo -ea Silent|%{$totalsize+=$_.Length};$totalsize"
Aucune commande de ce type n'est intégrée à DOS ou à la ligne de commande Windows. Sous Linux, il existe la commande du
(DiskUsage).
La gamme d’outils Sysinternals de Microsoft est dotée d’un outil équivalent à peu près à du
sous Linux. Il est aussi appelé du
. ;)
La taille du dossier peut être calculée avec le script de lot suivant:
@echo off
setlocal enabledelayedexpansion
set size=0
for /f "tokens=*" %%x in ('dir /s /a /b %1') do set /a size+=%%~zx
echo.!size!
endlocal
Vous pouvez toujours utiliser l'utilitaire de ligne de commande diruse.exe
du Kit de ressources Windows 2000 disponible ici:
https://support.Microsoft.com/en-us/kb/927229
Cela fonctionne sur Windows 8.1 sans aucun problème.
dir /s
Répertoriera les tailles de tous les fichiers et les fichiers de tous les sous-dossiers
Il suffit d’ouvrir power Shell et de faire un du -sh <directory>
sans avoir besoin d’installer une tierce partie ou un système interne. Dans Power-Shell, vous pouvez exécuter des commandes Linux simples telles que des commandes telles que ls ou du, certains des commutateurs ne fonctionneront pas comme si ls -alt
serait une erreur car powershell ne sait pas ce que le -alt est ...
La commande "dir" indique la taille du fichier, la date et l'heure de la dernière modification du répertoire en cours. Essayez d’abord de déplacer le répertoire dans lequel vous souhaitez utiliser la commande cd
, puis utilisez la commande dir
.
C:\>dir
Répertorie la taille du fichier, la date et l'heure de la dernière modification de tous les fichiers et répertoires du répertoire dans lequel vous vous trouvez, par ordre alphabétique.
Je me rends compte que cette question demandait une analyse de la taille du fichier en utilisant CMD line
. Mais si vous êtes prêt à utiliser PowerQuery (Excel add-in, versions 2010+)
, vous pouvez créer une analyse de la taille du fichier assez attrayante.
Le script ci-dessous peut être collé dans une requête vide; La seule chose à faire est d'ajouter un paramètre nommé "paramRootFolderSearch", puis d'ajouter votre valeur, telle que "C:\Users\bl0040\Dropbox \". J'ai utilisé cela comme guide: MSSQLTips: Récupérez les tailles de fichiers du système de fichiers à l'aide de Power Query .
Cette requête m'a fourni les données nécessaires pour créer un tableau croisé dynamique ([Folder Root]> [Folder Parent (1-2)], [Name]
) et j'ai pu identifier quelques fichiers que je pouvais supprimer, ce qui a permis de libérer beaucoup d'espace dans mon répertoire.
Voici le script M pour PowerQuery :
let
// Parmameters:
valueRootFolderSearch = paramRootFolderSearch,
lenRootFolderSearch = Text.Length(paramRootFolderSearch),
//
Source = Folder.Files(paramRootFolderSearch),
#"Removed Other Columns" = Table.RenameColumns(
Table.SelectColumns(Source,{"Name", "Folder Path", "Attributes"})
,{{"Folder Path", "Folder Path Full"}}),
#"Expanded Attributes" = Table.ExpandRecordColumn(#"Removed Other Columns", "Attributes", {"Content Type", "Kind", "Size"}, {"Content Type", "Kind", "Size"}),
#"fx_Size(KB)" = Table.AddColumn(#"Expanded Attributes", "Size(KB)", each [Size]/1024),
#"fx_Size(MB)" = Table.AddColumn(#"fx_Size(KB)", "Size(MB)", each [Size]/1048576),
#"fx_Size(GB)" = Table.AddColumn(#"fx_Size(MB)", "Size(GB)", each [Size]/1073741824),
fx_FolderRoot = Table.AddColumn(#"fx_Size(GB)", "Folder Root", each valueRootFolderSearch),
helper_LenFolderPathFull = Table.AddColumn(fx_FolderRoot, "LenFolderPathFull", each Text.Length([Folder Path Full])),
fx_FolderDepth = Table.AddColumn(helper_LenFolderPathFull, "Folder Depth", each Text.End([Folder Path Full], [LenFolderPathFull]-lenRootFolderSearch+1)),
#"helperList_ListFoldersDepth-Top2" = Table.AddColumn(fx_FolderDepth, "tmp_ListFoldersDepth", each List.Skip(
List.FirstN(
List.RemoveNulls(
Text.Split([Folder Depth],"\")
)
,3)
,1)),
#"ListFoldersDepth-Top2" = Table.TransformColumns(#"helperList_ListFoldersDepth-Top2",
{"tmp_ListFoldersDepth", each "\" & Text.Combine(List.Transform(_, Text.From), "\") & "\"
, type text}),
#"Select Needed Columns" = Table.SelectColumns(#"ListFoldersDepth-Top2",{"Name", "Folder Root", "Folder Depth", "tmp_ListFoldersDepth", "Content Type", "Kind", "Size", "Size(KB)", "Size(MB)", "Size(GB)"}),
#"rename_FoldersParent(1-2)" = Table.RenameColumns(#"Select Needed Columns",{{"tmp_ListFoldersDepth", "Folders Parent (1-2)"}})
in
#"rename_FoldersParent(1-2)"
Dossier Fichier Sizes_xlsx.png
Dossier Fichier Sizes_xlsx2.png