Windows 명령 줄에서 폴더 크기를 어떻게 확인할 수 있습니까?


36

Windows 명령 줄을 사용하여 폴더와 하위 폴더에있는 모든 파일의 크기를 계산하고 싶습니다. 일반적으로 폴더를 마우스 오른쪽 버튼으로 클릭하고 "속성"을 클릭하여이 작업을 수행하지만 명령 줄에서이 작업을 수행하려고합니다.

어떤 명령을 사용할 수 있습니까?

답변:


33

dir /a/s시스템 및 숨겨진 파일을 포함한 모든 파일을 포함 하도록 사용하려고 합니다. 이것은 당신에게 당신이 원하는 총 크기를 줄 것입니다.


명령의 출력이 디렉토리의 전체 크기를 어떻게 제공하는지 보여주세요. 답변을 수정하여 포함 시키십시오. 내 의견을 삭제하고 하향 투표를 취소합니다.
— dgo

2
@ user1167442 아직 시도하지 않았습니다. 결과에는 탐색기 속성이 제공하는 것과 동일한 크기가 포함됩니다.
— DavidPostill

1
@DavidPostill-맞습니다. 나는 멍청하게 부끄러워한다. 나는 downvote를 뒤집을 것이다. 즉, 나는 여전히이 솔루션에 너무 열중하지 않습니다. 다른 모든 것을 출력 할 필요는 없지만 조금 더 빠른 것을 선호합니다. 나는 잘못했다. -아아 견과-그것은 내 downvote를 되돌릴 수 없습니다. 그렇게 평판이 나자마자 나는 그것을 뒤집을 것이다.
— dgo December

1
그것은 작동했다
— -downvote

1
@QHarr 예, 계속해서 질문을 게시하면 답변을 드리겠습니다. 그렇게하면 모든 사람을 찾을 수있게되어 모든 사람을 도울 것입니다.
— RockPaperLizard

13

PowerShell을 사용할 수 있습니다!

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

이것은 입력 할 수없는 디렉토리를 무시하고 전체 현재 디렉토리를 반복하여 각 파일의 크기를 합산합니다. 그런 다음 총 크기를 바이트 단위로 인쇄합니다.

컴팩트 한 원 라이너 :

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

내 컴퓨터에서는 dir /s /a각 객체의 정보를 화면에 인쇄하지 않기 때문에 a보다 약간 빠릅니다 .

일반 명령 프롬프트에서 실행하려면

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

나는 powershell과 더 많은 시간을 보냈 으면 좋겠다. 나는 단지 결코 어떤 이유로 그것을 사용과 같은 -이 물건을 많이 슈퍼 유용하다하더라도
— DGO

훌륭한 솔루션-정말 빠릅니다!
— TrojanName

7

DOS 또는 Windows 명령 행에는 이러한 명령이 내장되어 있지 않습니다. Linux에는 du( D isk U sage) 명령이 있습니다.

Microsoft의 Sysinternals 툴 제품군에는 duLinux 와 거의 동일한 툴이 있습니다. 라고도 du합니다. ;)


1
du -sh <directory>리눅스에서 (또는 git를 통해 Windows로 이동) 디렉토리 크기에 대한 사람이 읽을 수있는 요약을 보여줍니다.
— kavun

고마워요, 정확히 내가 필요한 것입니다. 디스크가 커짐에 따라 파일 크기를 가져 오기 위해 마우스 오른쪽 버튼으로 클릭하는 속성이 점점 더 길어지고 결과를 선택하여 calc로 복사 할 수 없으므로 여러 외부 디스크로 분할 하면 소스 폴더의 모든 파일 이 기록 됩니다 . 텍스트 파일로 파이프 된 robocopy 배치의 끝 부분에 배치 한 다음 배치가 끝나면 파일 및 바이트가 파일인지 확인하기 위해 calc에 복사 / 붙여 넣을 수있는 총 파일 / 폴더 / 크기 메트릭이 있습니다. 소스와 동일합니다.
— Michael Stimson

2

폴더 크기는 다음 배치 스크립트를 사용하여 계산할 수 있습니다.

@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

Windows 7에서 이것을 실행하는 방법?
— klm123

cmd의 산술 제한으로 인해 전체 크기가 2GB를 초과하면 작동하지 않습니다.
— phuclv

...이 요즘 꽤 심각한 한계입니다!
— rossmcm


1

dir /s 모든 파일의 크기와 모든 하위 폴더의 파일을 나열합니다


1

이 질문에를 사용하여 파일 크기 분석이 필요하다는 것을 알고 CMD line있습니다. 그러나 사용하기에 개방적이라면 PowerQuery (Excel add-in, versions 2010+)매우 강력한 파일 크기 분석을 만들 수 있습니다.

아래 스크립트는 빈 쿼리에 붙여 넣을 수 있습니다. "paramRootFolderSearch"라는 매개 변수를 추가 한 다음 "C : \ Users \ bl0040 \ Dropbox \"와 같은 값을 추가하면됩니다. 나는 이것을 MSSQLTips : Power Query를 사용하여 파일 시스템에서 파일 크기를 검색합니다 .

이 쿼리는 피벗 테이블 ( [Folder Root]> [Folder Parent (1-2)], [Name]) 을 만들 수있는 데이터를 제공했으며 , 삭제할 수있는 파일 몇 개를 식별하여 디렉토리의 많은 공간을 정리했습니다.

PowerQuery의 M 스크립트는 다음과 같습니다 .

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)"

폴더 파일 크기 _xlsx.png

여기에 이미지 설명을 입력하십시오

폴더 파일 크기 _xlsx2.png

여기에 이미지 설명을 입력하십시오


0

Power Shell을 열기 만하면 du -sh <directory>타사 또는 sys-internals를 설치할 필요가 없습니다. Power-shell 내에서 ls 또는 du 명령과 같은 명령과 같은 간단한 Linux를 실행할 수 ls -alt있으며 powershell이 ​​-alt가 무엇인지 알 수 없으므로 일부 스위치 는 오류 처럼 작동 하지 않습니다 ...


3
어떤 버전의 PowerShell을 사용하고 있습니까? 그리고 Sysinternals가 설치되어 있지 않습니까? "du"명령은 내가 액세스 할 수있는 시스템에 내장되어 있지 않습니다. 일부 문서 링크도 도움이 될 것입니다.
— anlag

필자는 Windows 10의 최신 빠른 내부자 채널을 du사용
— 중이며

-2

"dir"명령은 현재 디렉토리의 파일 크기, 마지막 수정 날짜 및 시간을 제공합니다. 먼저 cd명령 을 사용하여 크기를 보려는 디렉토리로 이동 한 다음 명령을 사용하십시오 dir.

C:\>dir 

현재있는 디렉토리에있는 모든 파일 및 디렉토리의 파일 크기, 마지막 수정 날짜 및 시간을 사전 순으로 나열합니다.


2
이것은 또한 나쁜 대답입니다. 현재 디렉토리에있는 모든 파일의 결합 된 크기가 출력됩니다. 그러나 현재 디렉토리의 디렉토리 크기는 출력하지 않습니다. 이것은 단순히 op가 요구하는 것을하지 않습니다.
— dgo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.