国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

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

2019-11-08 01:38:25
字體:
來源:轉載
供稿:網友

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

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

ディレクトリ(フォルダ)単位でファイル容量の合計を出力する參考サイト記事関連記事ディレクトリ內のファイル合計サイズを出力するFunctionで実現?Get-DirTotalFileSize()実行してみるCSVにしてみる

參考サイト記事 ?

PowerShellのカスタムオブジェクト(PSCustomObject)の使い方↑

関連記事 ?

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.NETPS 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> $oPATH                                       SUM----                                       ---C:/Windows/Microsoft.NET/assembly    168640526C:/Windows/Microsoft.NET/Framework   263581306C:/Windows/Microsoft.NET/Framework64 551896484

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

01.png

Functionで実現?Get-DirTotalFileSize() ?

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

filefunc.ps1
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-DirTotalFileSizeUsage: Get-DirectorySize <path>PS C:/> Get-DirTotalFileSize hogeCannot access hoge : No such directoryPS C:/> Get-DirTotalFileSize C:/Windows/Microsoft.NETPATH                                       SUM----                                       ---C:/Windows/Microsoft.NET/assembly    168640526C:/Windows/Microsoft.NET/authman             0C:/Windows/Microsoft.NET/Framework   263581306C:/Windows/Microsoft.NET/Framework64 551896484ファイル合計値が正しいか確認 エクスプローラで1つ確認し、値が正しいか確認しました。02.png

CSVにしてみる ?

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

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

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

03.png

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 揭西县| 开远市| 施秉县| 靖宇县| 云梦县| 蒙山县| 东方市| 沙河市| 太仓市| 潍坊市| 道真| 青岛市| 铁岭县| 长岛县| 资中县| 特克斯县| 大关县| 韶关市| 滨海县| 宝丰县| 腾冲县| 仙居县| 启东市| 望奎县| 澎湖县| 旺苍县| 浮山县| 凤凰县| 泾阳县| 曲沃县| 西丰县| 海盐县| 济南市| 深州市| 巍山| 云阳县| 大名县| 镇巴县| 元谋县| 连平县| 镇赉县|