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.