PowerShell/ディレクトリ単位でファイル容量の合計を出力する


ディレクトリ(フォルダ)単位でファイル容量の合計を出力する 

PowerShellを用い、ディレクトリ単位でファイル容量を出力する方法を以下に記します。
本資料では、簡単なサンプルを公開しています。


参考サイト記事 

関連記事 

ディレクトリ内のファイル合計サイズを出力する 

以下のスクリプトは、現在いるカレントディレクトリ内にあるフォルダを対象とし、そのフォルダ内にあるファイル容量の合計値を取得します。

$o = @()
Get-ChildItem . | Where-Object PSisContainer | %{ $PATH=$_; Get-ChildItem -Force -Recurse $_ | Measure-Object -Sum Length } | %{ $o += ([PSCustomObject]@{ PATH=$PATH.FullName; SUM=$_.Sum })}
$o

上記のスクリプトを起動すると以下のように出力されます。
尚、カレントディレクトリ(.)上にある、ファイルは対象外となります。
以下の例では、C:\Windows\Microsoft.NET を対象にファイルサイズを取得しました。

PS C:\> cd C:\Windows\Microsoft.NET
PS C:\Windows\Microsoft.NET> $o = @()
PS C:\Windows\Microsoft.NET> Get-ChildItem . | Where-Object PSisContainer | %{ $PATH=$_; Get-ChildItem -Force -Recurse $_ | Measure-Object -Sum Length } | %{ $o += ([PSCustomObject]@{ PATH=$PATH.FullName; SUM=$_.Sum })}
PS C:\Windows\Microsoft.NET> $o

PATH                                       SUM
----                                       ---
C:\Windows\Microsoft.NET\assembly    168640526
C:\Windows\Microsoft.NET\Framework   263581306
C:\Windows\Microsoft.NET\Framework64 551896484

ディレクトリ構造を確認します。
バグ発見です!
以下のスクリーンショットの通り、4つのフォルダがあるのに、authmanが表示されていません。
調べてみると、Get-ChildItemで指定したフォルダ内にファイルが1つもないとnullを返却しており、
後方の処理に渡らない事が判明しました。

01.png

Functionで実現・Get-DirTotalFileSize() 

if else を使うとパイプラインがうまく動作しなかったので、以下のように関数にしました。 以下のように関数として作成しました。

Function Get-DirTotalFileSize() {
  if ($args.Length -ne 1) {
    $Host.UI.WriteErrorLine("Usage: Get-DirectorySize <path>")
    return
  }
  $pathto = $args[0]
  if (!(Test-Path -PathType Container $pathto)) {
    $Host.UI.WriteErrorLine("Cannot access $pathto : No such directory")
    return
  }

  $o = @()
  $dirs = Get-ChildItem $pathto | Where-Object PSisContainer
  $dirs | % {
    $PATH=$_;
    if ((Get-ChildItem $_.FullName).Length -ne 0) {
      $measure = Get-ChildItem -Force -Recurse $_.FullName | Measure-Object -Sum Length
      $o += [PSCustomObject]@{ PATH=$PATH.FullName; SUM=$measure.Sum }
    } else {
      $o +=  [PSCustomObject]@{ PATH=$PATH.FullName; SUM=0 }
    }
  }
  $o
}

実行してみる 

上記のスクリプトをダウンロードするか、テキストエディタに貼り付け保存してください。
尚、拡張子はps1にしてください。
以下の例は、デスクトップに保存し使用した例です。
面倒であれば、上記スクリプトをPowerShellのコンソールに貼り付けてもOKです。

  • スクリプトの取込み
    dotににより、スクリプトを取込みます。(Linuxなどのshellと同じですね。)
    . PS C:\> . C:\Users\sakura\Desktop\func.ps1
  • エラー処理およびディレクトリを指定して実行
    PS C:\> Get-DirTotalFileSize
    Usage: Get-DirectorySize <path>
    PS C:\> Get-DirTotalFileSize hoge
    Cannot access hoge : No such directory
    PS C:\> Get-DirTotalFileSize C:\Windows\Microsoft.NET
    
    PATH                                       SUM
    ----                                       ---
    C:\Windows\Microsoft.NET\assembly    168640526
    C:\Windows\Microsoft.NET\authman             0
    C:\Windows\Microsoft.NET\Framework   263581306
    C:\Windows\Microsoft.NET\Framework64 551896484
  • ファイル合計値が正しいか確認 エクスプローラで1つ確認し、値が正しいか確認しました。
    02.png

CSVにしてみる 

上記の関数により、ファイルサイズ一覧が取得できたので、CSVにしてみます。

PS C:\> $d = Get-DirTotalFileSize C:\Windows\Microsoft.NET
PS C:\> $d | Export-Csv -NoTypeInformation -Encoding Default list.csv
PS C:\> notepad.exe .\list.csv

csv出力されているのが確認できます。

03.png

以上、PowerShellでディレクトリ内のファイル総合計容量を確認する方法でした。

内容概要:《2024年中国城市低空经济发展指数报告》由36氪研究院发布,指出低空经济作为新质生产力的代表,已成为中国经济新的增长点。报告从发展环境、资金投入、创新能力、基础支撑和发展成效五个维度构建了综合指数评价体系,评估了全国重点城市的低空经济发展状况。北京和深圳在总指数中名列前茅,分别以91.26和84.53的得分领先,展现出强大的资金投入、创新能力和基础支撑。低空经济主要涉及无人机、eVTOL(电动垂直起降飞行器)和直升机等产品,广泛应用于农业、物流、交通、应急救援等领域。政策支持、市场需求和技术进步共同推动了低空经济的快速发展,预计到2026年市场规模将突破万亿元。 适用人群:对低空经济发展感兴趣的政策制定者、投资者、企业和研究人员。 使用场景及目标:①了解低空经济的定义、分类和发展驱动力;②掌握低空经济的主要应用场景和市场规模预测;③评估各城市在低空经济发展中的表现和潜力;④为政策制定、投资决策和企业发展提供参考依据。 其他说明:报告强调了政策监管、产业生态建设和区域融合错的重要性,提出了加强法律法规建设、人才储备和基础设施建设等建议。低空经济正加速向网络化、智能化、规模化和集聚化方向发展,各地应找准自身比较优势,实现差异化发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值