¿Cómo puedo verificar el tamaño de una carpeta desde la línea de comandos de Windows?


36

Quiero usar la línea de comandos de Windows para calcular el tamaño de todos los archivos en una carpeta y subcarpeta. Normalmente haría esto haciendo clic derecho en la carpeta y haciendo clic en "Propiedades", pero quiero poder hacerlo en la línea de comando.

¿Qué comando puedo usar?

Respuestas:


33

Deberá utilizarlo dir /a/spara que incluya todos los archivos, incluidos el sistema y los archivos ocultos. Esto te dará el tamaño total que deseas.


Muéstrame cómo la salida de tu comando me da el tamaño total del directorio. Edite su respuesta para incluirla. Eliminaré mis comentarios y revertiré mi voto negativo.
dgo

2
@ user1167442 Claramente no lo has probado. El resultado incluye exactamente el mismo tamaño que le da las propiedades del explorador.
DavidPostill

1
@DavidPostill: tienes razón. Estoy colgado de vergüenza. Revertiré el voto negativo. Dicho esto, todavía no estoy muy interesado en esta solución: preferiría algo un poco más rápido que no requiera generar todas las demás cosas, pero funciona. He errado - Ahh loco - no ganó; déjame revertir mi voto negativo. Tan pronto como tenga la reputación de hacerlo, lo revertiré.
dgo

1
Funcionó - se eliminó el
voto negativo

1
@ QHarr Sí, adelante, publique una pregunta y le escribiré una respuesta. De esa manera, ayudará a todos al poder buscar para que todos puedan encontrar.
RockPaperLizard

13

¡Puedes usar PowerShell!

$totalsize = [long]0
Get-ChildItem -File -Recurse -Force -ErrorAction SilentlyContinue | % {$totalsize += $_.Length}
$totalsize

Esto se repite a través de todo el directorio actual (ignorando los directorios que no se pueden ingresar) y resume los tamaños de cada archivo. Luego imprime el tamaño total en bytes.

One-liner compactado:

$totalsize=[long]0;gci -File -r -fo -ea Silent|%{$totalsize+=$_.Length};$totalsize

En mi máquina, esto parece un poco más rápido que a dir /s /a, ya que no imprime la información de cada objeto en la pantalla.

Para ejecutarlo desde un símbolo del sistema normal:

powershell -command "$totalsize=[long]0;gci -File -r -fo -ea Silent|%{$totalsize+=$_.Length};$totalsize"

Desearía pasar más tiempo con powershell. Simplemente nunca me gusta usarlo por alguna razón, a pesar de que es súper útil para muchas cosas
dgo

Gran solución, ¡muy rápido también!
TrojanName

7

No existe dicho comando integrado en la línea de comandos de DOS o Windows. En Linux, está el comando du( D isk U sage).

La línea de herramientas Sysinternals de Microsoft tiene una herramienta que es más o menos equivalente a la dude Linux. También se llama du. ;)


1
du -sh <directory>es mi ir a Linux (o Windows w / du a través de git) para mostrar un resumen legible por humanos del tamaño del directorio.
kavun

Gracias, eso es exactamente lo que necesitaba. A medida que los discos crecen, se tarda cada vez más en hacer clic con el botón derecho en las propiedades para obtener los tamaños de archivo y el resultado no se puede seleccionar y copiar en calc para garantizar que la división en múltiples discos externos haya escrito cada archivo en la carpeta de origen. Lo puse al final de un lote de robocopy canalizado a un archivo de texto y luego, cuando finaliza el lote, tengo una métrica total de archivo / carpeta / tamaño que se puede copiar / pegar en calc para garantizar que los archivos y bytes sean los igual que la fuente
Michael Stimson el

2

El tamaño de la carpeta se puede calcular con el siguiente script por lotes:

@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

¿Cómo ejecutar esto en Windows 7?
klm123

esto no funcionará si el tamaño total es superior a 2 GB debido al límite de aritmética en cmd
phuclv

... que en estos días es una limitación bastante seria!
rossmcm


1

dir /s Enumerará los tamaños de todos los archivos y los archivos de todas las subcarpetas.


1

Me di cuenta que pregunta para el análisis de tamaño de archivo usando CMD line. Pero si está abierto a usar PowerQuery (Excel add-in, versions 2010+), puede crear un análisis de tamaño de archivo bastante convincente.

El siguiente script se puede pegar en una consulta en blanco; Lo único que deberá hacer es agregar un parámetro llamado "paramRootFolderSearch" y luego agregar su valor, como "C: \ Users \ bl0040 \ Dropbox \". Utilicé esto como guía: MSSQLTips : recupere tamaños de archivo del sistema de archivos usando Power Query .

Esta consulta me proporcionó los datos para crear una tabla dinámica ( [Folder Root]> [Folder Parent (1-2)], [Name]), y pude identificar algunos archivos que pude eliminar, lo que despejó mucho espacio en mi directorio.

Aquí está el script M para 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)"

Tamaño de archivo de carpeta_xlsx.png

ingrese la descripción de la imagen aquí

Tamaño de archivo de carpeta_xlsx2.png

ingrese la descripción de la imagen aquí


0

Simplemente abra Power Shell y du -sh <directory>no necesite instalar terceros o sistemas internos. Dentro de Power-shell puede ejecutar algunos comandos simples de Linux, como los comandos ls o du, algunos de los conmutadores no funcionarán como ls -alterror, ya que powershell no sabe qué es -alt ...


3
¿Qué versión de PowerShell estás usando? ¿Y estás seguro de que no tienes Sysinternals instalado? El comando "du" no parece estar integrado en ningún sistema al que tenga acceso. Algún enlace de documentación también sería útil.
anlag

Estoy en el último canal interno rápido de Windows 10 y no hay absolutamente ningún ducomando disponible
phuclv

-2

El comando "dir" proporciona el tamaño del archivo, la fecha y hora de la última modificación del directorio actual. Primero intente moverse al directorio en el que desea ver el tamaño del uso del cdcomando, luego use el dircomando.

C:\>dir 

Muestra el tamaño del archivo, la fecha y la hora de la última modificación de todos los archivos y directorios en el directorio en el que se encuentra actualmente, en orden alfabético.


3
Esta también es una mala respuesta. Esto generará el tamaño combinado de todos los archivos en el directorio actual. Sin embargo, no generará el tamaño de ningún directorio en el directorio actual. Esto simplemente no hace lo que el operador está pidiendo.
dgo
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.