web-dev-qa-db-fra.com

Comment puis-je vérifier la taille d'un dossier à partir de la ligne de commande Windows?

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?

30
user1605665

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.

29
RockPaperLizard

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"
8
Ben N

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. ;)

5
Daniel B

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
2
no73

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.

2
RockHead

dir /s Répertoriera les tailles de tous les fichiers et les fichiers de tous les sous-dossiers

1
Keltari

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 ...

0
tmac

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.

0
vembutech

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

 enter image description here

Dossier Fichier Sizes_xlsx2.png

 enter image description here

0