Como posso verificar o tamanho de uma pasta na linha de comando do Windows?

36

Eu quero usar a linha de comando do Windows para calcular o tamanho de todos os arquivos em uma pasta e subpasta. Normalmente, eu faria isso clicando com o botão direito do mouse na pasta e clicando em "Propriedades", mas quero poder fazê-lo na linha de comando.

Qual comando posso usar?

user1605665
fonte

Respostas:

33

Você deseja usar dir /a/spara que ele inclua todos os arquivos, incluindo arquivos do sistema e ocultos. Isso lhe dará o tamanho total que você deseja.

RockPaperLizard
fonte
Mostre-me como a saída do seu comando me fornece o tamanho total do diretório. Edite sua resposta para incluí-la. Vou excluir meus comentários e reverter meu voto negativo.
dgo 01/12/19
2
@ user1167442 Você claramente não tentou. A saída inclui exatamente o mesmo tamanho que as propriedades do explorer fornecem.
DavidPostill
1
@DavidPostill - você está correto. Eu tenho vergonha de vergonha. Eu vou reverter o voto negativo. Dito isto, ainda não estou muito interessado nessa solução - prefiro algo um pouco mais rápido que não exija a saída de todas as outras coisas, mas funciona. Eu errei. - Ahh, nozes - ele ganhou; não me deixe reverter meu voto negativo. Assim que eu conseguir a reputação, vou revertê-la.
dgo 8/12/16
1
Funcionou -
voto negativo
1
@ QHarr Sim, vá em frente e poste uma pergunta, e eu escreverei uma resposta para você. Dessa forma, ajudará a todos sendo pesquisável para que todos possam encontrar.
RockPaperLizard
13

Você pode usar o PowerShell!

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

Isso ocorre em todo o diretório atual (ignorando os diretórios que não podem ser inseridos) e resume os tamanhos de cada arquivo. Em seguida, imprime o tamanho total em bytes.

Forro único compactado:

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

Na minha máquina, isso parece um pouco mais rápido que um dir /s /a, pois não imprime as informações de cada objeto na tela.

Para executá-lo em um prompt de comando normal:

powershell -command "$totalsize=[long]0;gci -File -r -fo -ea Silent|%{$totalsize+=$_.Length};$totalsize"
Ben N
fonte
Eu gostaria de passar mais tempo com o PowerShell. Eu simplesmente nunca gosto de usá-lo por algum motivo - mesmo que seja super útil para muitas coisas
dgo 09/12/16
Ótima solução - muito rápido também!
TrojanName
7

Esse comando não existe no DOS ou na Linha de Comando do Windows. No Linux, há o comando du( D isk U sage).

A linha de ferramentas Sysinternals da Microsoft possui uma ferramenta que é aproximadamente equivalente à dudo Linux. Também é chamado du. ;)

Daniel B
fonte
1
du -sh <directory>é o meu acesso no Linux (ou no Windows via git) para mostrar um resumo legível por humanos do tamanho do diretório.
Kavun # 26/15
Obrigado, é exatamente o que eu precisava. À medida que os discos aumentam, leva mais e mais tempo para clicar com o botão direito do mouse nas propriedades para obter os tamanhos dos arquivos e o resultado não pode ser selecionado e copiado no calc para garantir que a divisão em vários discos externos tenha gravado todos os arquivos na pasta de origem. Coloquei isso no final de um lote de robocópia canalizado para um arquivo de texto e, quando o lote termina, tenho uma métrica total de arquivo / pasta / tamanho que pode ser copiada / colada no calc para garantir que os arquivos e bytes sejam os mesmo que a fonte.
Michael Stimson
2

O tamanho da pasta pode ser calculado com o seguinte script em lote:

@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
no73
fonte
Como executar isso no Windows 7?
Klm123
isso não funcionará se o tamanho total for superior a 2 GB devido ao limite de aritmética em cmd
phuclv 11/03/14
... que hoje em dia é uma limitação bastante séria!
rossmcm 5/09
2

Você ainda pode usar o utilitário de linha de comando diruse.exedo Windows 2000 Resource Kit disponível aqui:

https://support.microsoft.com/en-us/kb/927229

Funciona no Windows 8.1 sem problemas.

RockHead
fonte
Boa descoberta, você poderia adicionar um exemplo de uso?
Burgi
1

dir /s Listará os tamanhos de todos os arquivos e os arquivos em todas as subpastas

Keltari
fonte
1

Percebo que esta pergunta foi feita para análise de tamanho de arquivo usando CMD line. Mas se você estiver pronto para usar PowerQuery (Excel add-in, versions 2010+), poderá criar uma análise bastante atraente do tamanho do arquivo.

O script abaixo pode ser colado em uma Consulta em Branco; A única coisa que você precisa fazer é adicionar um parâmetro chamado "paramRootFolderSearch" e depois adicionar seu valor, como "C: \ Users \ bl0040 \ Dropbox \". Usei isso como um guia: MSSQLTips: recupere tamanhos de arquivo do sistema de arquivos usando o Power Query .

Essa consulta forneceu os dados para eu criar uma tabela dinâmica ( [Folder Root]> [Folder Parent (1-2)], [Name]) e pude identificar alguns arquivos que eu poderia excluir, o que liberava muito espaço no meu diretório.

Aqui está o script M para o 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)"

Arquivo de pasta Sizes_xlsx.png

insira a descrição da imagem aqui

Arquivo de pasta Sizes_xlsx2.png

insira a descrição da imagem aqui

SherlockSpreadsheets
fonte
0

Basta abrir o power shell e du -sh <directory>não é necessário instalar terceiros ou sys-internals. No Power-shell, você pode executar alguns comandos simples do Linux, como ls ou du, alguns dos switches não funcionarão como ls -alterros, pois o powershell não sabe o que é o -alt ...

tmac
fonte
3
Qual versão do PowerShell você está usando? E você tem certeza de que não possui o Sysinternals instalado? O comando "du" não parece estar embutido em nenhum sistema ao qual tenho acesso. Algum link de documentação também seria útil.
anlag
Estou no canal mais rápido sobre informações privilegiadas do Windows 10 e não há absolutamente nenhum ducomando disponível
phuclv
-2

O comando "dir" fornece o tamanho do arquivo, data da última modificação e hora do diretório atual. Primeiro, tente ir para o diretório que você deseja ver no tamanho de usar o cdcomando e, em seguida, use o dircomando.

C:\>dir 

Lista o tamanho do arquivo, data e hora da última modificação de todos os arquivos e diretórios no diretório em que você está atualmente, em ordem alfabética.

vembutech
fonte
3
Esta também é uma resposta ruim. Isso produzirá o tamanho combinado de todos os arquivos no diretório atual. No entanto, ele não produzirá o tamanho de nenhum diretório no diretório atual. Isso simplesmente não faz o que a operação está pedindo.
DGO