Windowsコマンドラインからフォルダーのサイズを確認するにはどうすればよいですか?


36

Windowsコマンドラインを使用して、フォルダーおよびサブフォルダー内のすべてのファイルのサイズを計算します。通常、これはフォルダーを右クリックして[プロパティ]をクリックすることで行いますが、コマンドラインで実行できるようにしたいのです。

どのコマンドを使用できますか?

回答:


33

dir /a/sシステムファイルと隠しファイルを含むすべてのファイルが含まれるように使用します。これにより、希望する合計サイズが得られます。


コマンドの出力によってディレクトリの合計サイズがどのように得られるかを示してください。回答を編集して含めます。コメントを削除して、反対票を取り消します。
dgo

2
@ user1167442あなたは明らかにそれを試していない。出力には、エクスプローラーのプロパティが提供するサイズとまったく同じサイズが含まれます。
DavidPostill

1
@DavidPostill-あなたは正しいです。恥ずかしくて恥ずかしい。私は下票を逆にします。とはいえ、私はまだこの解決策にあまり熱心ではありません-他のすべてのものを出力する必要はないが、それでも機能する少し速いものを好むでしょう。私は間違っています。-ああ、ナット-それは勝ちました;私は私の下票を逆転させません。私はそうする評判を得たらすぐにそれを逆にします。
DGO

1
それは働いた-downvote削除-)
dgo

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にはduD isk U sage)コマンドがあります。

MicrosoftのSysinternalsのツールラインには、duLinux とほぼ同等のツールがあります。とも呼ばれduます。;)


1
du -sh <directory>Linux(またはgitを介したduを使用したWindows)で、人間が読めるディレクトリサイズの概要を表示します。
kavun

おかげで、まさにそれが私が必要としていたものです。ディスクが大きくなると、プロパティを右クリックしてファイルサイズを取得するのに時間がかかります。結果を選択してcalcにコピーすることはできません。複数の外部ディスクに分割すると、ソースフォルダーのすべてのファイルが書き込まれます。テキストファイルにパイプされたrobocopyバッチの最後にそれを配置し、バッチが終了すると、合計ファイル/フォルダー/サイズメトリックを取得します。ソースと同じ。
マイケルスティムソン

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における演算の限界に2ギガバイトを超える場合には、この意志はない作品
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

電源シェルを開くだけで、du -sh <directory>サードパーティまたはsys-internalsをインストールする必要はありません。Power-shell内では、lsやduコマンドなどのコマンドのような単純なLinuxを実行できますls -alt。Powershellは-altが何であるかを知らないため、一部のスイッチはエラーのように動作しません。


3
どのバージョンのPowerShellを使用していますか?そして、Sysinternalsがインストールされていないと確信していますか?「du」コマンドは、アクセスできるシステムには組み込まれていないようです。いくつかのドキュメントリンクも役立ちます。
-anlag

私はWindows 10の最新の高速インサイダーチャンネルをdu使用していますが、使用できるコマンドはまったくありません
phuclv

-2

「dir」コマンドは、現在のディレクトリのファイルサイズ、最終変更日時を提供します。最初に、cdコマンドを使用するサイズを確認するディレクトリに移動してから、コマンドを使用してくださいdir

C:\>dir 

現在のディレクトリ内のすべてのファイルとディレクトリのファイルサイズ、最終変更日時をアルファベット順にリストします。


3
これも悪い答えです。これにより、現在のディレクトリ内のすべてのファイルの合計サイズが出力されます。ただし、現在のディレクトリ内のディレクトリのサイズは出力しません。これは単にopが求めていることをしません。
DGO
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.