Windows

【Windows】forfilesコマンドで指定サイズ以上のファイル一覧を取得する

容量の大きいファイル

 

もぉ~、会社の共有フォルダ、空き容量がなくて新しいファイルを保存できないよ~
おぉ、またかのぉ~要らないファイルを削除するしかないのぉ(ポチポチ)

 

こんな会話をオフィスでしているあなた!この記事を読んで、フォルダの大掃除をしましょう!

 

たしかにファイルを削除すれば容量は空きますが、小さなファイルをいくら削除しても、たいした効果はありません。

たとえば、50KBのファイルを10個削除するより、1MBのファイルを1個削除したほうが空き容量が増えますよね。
(※ファイルサイズの単位の話はのちほど詳しく説明します!)

 

ねぇもりさん、サイズの大きいファイルがどこにあるか調べられないかなぁ?
もり
もり
できるよ!Windowsのツールだけでできる方法を紹介するね

 

Windowsで、「指定のパス配下」の「指定のサイズ以上」のファイル一覧を取得する方法を紹介します。

【例】C:\xxx\xxx\xxx配下の3MB以上のファイル一覧を取得する

 

もり
もり
手当たり次第にファイルを削除するより、まずは、大きなファイルがどこのパスにあるか調べよう!

実行前の注意点

まず、ファイルの一覧を取得するフォルダのサイズを確認しておきましょう。この記事では、私のパソコンのフォルダを使って解説していきます。

フォルダを右クリックすると、このようにサイズが確認できます。約70MBで5~10秒程度でした。

window-forfiles9

以前、会社で10GB(ギガバイト)程度のフォルダから一覧を取得したら、2~3時間かかりました。

実行時間が不安な方は、まずは、容量の小さめなフォルダで作業をしていきましょう!

指定の大きさ以上のファイル一覧を取得する方法

それでは作業を進めていきましょう!

もり
もり
まずは、ファイル一覧を取得するコマンドを作るよ!呪文みたいで長いから、暗記しなくて大丈夫だよ

コマンドを作成する

ファイル一覧を取得するコマンドのひな形がこちらです。コマンドの意味は記事の最後で紹介しているので、気になる方は先にこちらをご覧ください!

※横に長いのでスクロールしてください

[ ]の3ヵ所を、各自の環境・目的に合わせて設定します。

  1. フォルダのパス = ファイル一覧を取得したいパス(フルパスで指定)
  2. ファイルサイズ = 何バイト以上のファイルを出力対象とするか※B(バイト)単位で指定
  3. 出力ファイル名 = 結果を出力するファイル名、なんでもOKです

ファイルサイズの早見表がこちら。

ファイルサイズの単位 計算式 コマンドで指定する数値
1B(バイト) 1 1
1KB(キロバイト) 1024 1024
1MB(メガバイト) 1024^2 1048576
1GB(ギガバイト) 1024^3 1073741824

 

たとえば、3MB以上のファイル一覧を出力したい場合は、1048576*3 = 3145728 を指定すればよいですね。

ファイルのサイズ感がわからない方は、とりあえず、1MBの1048576を指定しましょう!

  • 1KB(キロバイト)→小さすぎてほぼすべてのファイルが抽出される
  • 1GB(ギガバイト)→大きすぎて存在しない(1ファイル1ギガって、一体どんなファイル?!)

 

私は下記の①~③を設定してコマンドを実行します。

  1. フォルダのパス = C:\Users\ymori\OneDrive\ドキュメント\もりさんのプログラミング手帳
  2. ファイルサイズ = 1MB以上のファイルを出力するので、1048576
  3. 出力ファイル名 = result

上記の①~③を、ひな形にあてはめると、このようになります。①~③を各自の環境・目的に合わせて置き換えましょう。

コマンドプロンプトを起動する

もり
もり
まずは、コマンドプロンプトというツールを起動するよ

コマンドプロンプトって何?と気になる方は、こちらの記事で解説しているのでご確認くださいね。
もちろん、上記の記事を読まなくても作業できるように解説していきますのでご安心を!

 

まず、キーボードの Windowsキー + R を押します。

window-forfiles1

「ファイル名を指定して実行」のダイアログにcmdと入力し、OK。

window-forfiles2

コマンドプロンプト(黒い画面)が起動しました。

コマンドを入力する

この画面に、先ほど作成したコマンドを入力します。

※長いコマンドを入力するのは大変なので、あらかじめメモ帳などにコマンドを作成しておき、それをコピー&貼り付けしましょう!

貼り付け方法は、下記のいずれかで可能です(バージョンによって異なる)

  • Ctrl + V
  • マウスを右クリック
  • マウスを右クリック → 貼り付け
window-forfiles3

カーソルが点滅している間は実行中です!

実行中の待っている時間は、他の作業をしていて大丈夫です。ただし、この画面には触らないように気をつけましょう!

window-forfiles4-2

下記のように、パスが表示されたら処理終了です。

window-forfiles5-2

結果ファイルを確認する

コマンド実行結果がCSVファイルで出力されます。

  • 出力先 … コマンドプロンプトに表示されているパス(赤枠)
  • 出力ファイル名 … コマンドで指定した名前(水色枠)
window-forfiles6-2

結果ファイルには、下記の3つの情報が出力されています。私は出力条件を1MB以上(1048576バイト)と指定したので、それに合致するファイルのみが出力されています。

  1. 最終更新日
  2. ファイルサイズ(バイト単位)
  3. ファイルのフルパス
window-forfiles7
これで、どこのフォルダに大きなファイルがあるか確認できるね

コマンドプロンプトを終了する

コマンドプロンプトはもう使わないので、終了します。exitと入力してEnterキーを押すと画面が閉じます。

window-forfiles8-2

結果ファイルを見やすく加工しよう

出力したCSVファイルを整えていきます。まずは、CSVからExcelに変換しましょう。

[最終更新日][ファイルサイズ][ファイルパス]の3つのデータが、スペース区切りで1行になっています。これらをスペースで分割します。Excelの「区切り位置」の機能を使います。

①データが存在する範囲を選択して、②データタブの、③区切り位置を選択

window-forfiles10

「カンマやタブなどの~」を選択して、「次へ」

window-forfiles11

区切り文字「スペース」を選択し、次へは押さず、「完了」

window-forfiles12

A列・B列・C列に分割できました!

window-forfiles13

あとは、1行目にヘッダーを付けて、ファイルサイズをKB・MBに変換すると見やすくなります。このあたりはお好みで加工しましょう。

ファイルサイズの単位 バイトに換算すると
1B(バイト) 1
1KB(キロバイト) 1024
1MB(メガバイト) 1024^2 =1,048,576
window-forfiles14

forfilesコマンドの解説

もり
もり
さっき実行したコマンドを説明するね

コマンド 意味・処理内容
forfiles 指定のフォルダやファイルを抽出し、それを元にして、指定されたコマンドを実行する
/s サブディレクトリに対しても処理する
/p ファイル検索を開始するパスを表す
/c 実行するコマンドを指定。コマンドはダブルクオートで囲む
if @fsize gtr xxx もし、@fsize(ファイルサイズ)がxxx以上なら ※gtrはgreater than(~以上)の意味
echo 結果を出力する
@fdate 最終更新日
@fsize ファイルのサイズ
@path ファイルのフルパス
> [xxx].csv xxxという名前のcsvファイルに出力する

 

ふぅ~。手当たり次第にファイルを削除するよりも、大きいファイルを洗い出して削除したほうが効果があるのぉ~

この方法でファイルを洗い出せば、巨大なゴミファイルが意外なフォルダに眠ってた!なんて発見ができるかもしれませんよ!

もり
もり
みんなもフォルダの大掃除してみてね~