2015年5月28日木曜日

[Powershell] フォルダの中身・ファイルサイズなどをCSVファイルで書き出す方法[メモ]

自分用メモ

カレントディレクトリの中身をサブディレクトリの中も含めCSV形式で出力するコマンド。標準出力をテキストにして出すと集計するときにスペース区切りなので始末が大変だけど、CSVにすると普通にExcelで確認できるので楽な気がする。

Get-ChildItem -Recurse | Select-Object Name, Length, LastAccessTime, CreationTime | Export-Csv [export file name] -encoding Default

Get-ChildItem
lsとかdirコマンドみたいなやつ。場所を指定する場合には、この後にパスを指定する。

-Recurse
これを追加するとサブフォルダの中まで掘っていく。

Select-Object Name, Length, LastAccessTime, CreationTime
上のコマンドでどのデータがほしいか指定するやつ。情報の名前をカンマ区切りで入力する。ネットで調べればどんなオプションがあるのかすぐに調べられる。上の場合は、ファイル名、ファイルサイズ、最終アクセス日、作成日を出力する 。

Export-Csv [export file name] -encoding Default
今回の肝はこれかも。上の情報をCSVで出力する。encoding Defaultを指定しないと文字化けする。


使い道

共有サーバーの一次ファイル置き場にいつまでも古いファイルおきっぱなしにするやつが居たりするので、その手のファイルがないかサーバーの数カ所を指定したバッチファイルを作って時々CSVに出力してたたきつけてる。対して重要じゃないメディアファイルがどれくらいサーバーの容量を圧迫しているかをしめす必要があるので。

これで出力したデータを規定のExcelにぶち込むと自動的にいろいろと集計してレポート作れるようにしているので、定期的に各部署に送りつけて整頓を促して、古すぎるファイルは勝手に消すので、と通達しているかんじです。素人管理ではこれが精一杯。

Select-Objectコマンドはたぶんファイルのパスを示したりできるのでもうちょっと工夫出来そうではある。

0 件のコメント:

コメントを投稿