こんな会話をオフィスでしているあなた!この記事を読んで、フォルダの大掃除をしましょう!
たしかにファイルを削除すれば容量は空きますが、小さなファイルをいくら削除しても、たいした効果はありません。
たとえば、50KBのファイルを10個削除するより、1MBのファイルを1個削除したほうが空き容量が増えますよね。
(※ファイルサイズの単位の話はのちほど詳しく説明します!)
Windowsで、「指定のパス配下」の「指定のサイズ以上」のファイル一覧を取得する方法を紹介します。
【例】C:\xxx\xxx\xxx配下の3MB以上のファイル一覧を取得する
Contents
実行前の注意点
まず、ファイルの一覧を取得するフォルダのサイズを確認しておきましょう。この記事では、私のパソコンのフォルダを使って解説していきます。
フォルダを右クリックすると、このようにサイズが確認できます。約70MBで5~10秒程度でした。
以前、会社で10GB(ギガバイト)程度のフォルダから一覧を取得したら、2~3時間かかりました。
実行時間が不安な方は、まずは、容量の小さめなフォルダで作業をしていきましょう!
指定の大きさ以上のファイル一覧を取得する方法
それでは作業を進めていきましょう!
コマンドを作成する
ファイル一覧を取得するコマンドのひな形がこちらです。コマンドの意味は記事の最後で紹介しているので、気になる方は先にこちらをご覧ください!
※横に長いのでスクロールしてください
1 |
forfiles /s /p "[フォルダのフルパス]" /c "cmd /c if @fsize gtr [ファイルサイズ] echo @fdate @fsize @path" > [出力ファイル名].csv |
[ ]の3ヵ所を、各自の環境・目的に合わせて設定します。
- フォルダのパス = ファイル一覧を取得したいパス(フルパスで指定)
- ファイルサイズ = 何バイト以上のファイルを出力対象とするか※B(バイト)単位で指定
- 出力ファイル名 = 結果を出力するファイル名、なんでも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ギガって、一体どんなファイル?!)
私は下記の①~③を設定してコマンドを実行します。
- フォルダのパス = C:\Users\ymori\OneDrive\ドキュメント\もりさんのプログラミング手帳
- ファイルサイズ = 1MB以上のファイルを出力するので、1048576
- 出力ファイル名 = result
上記の①~③を、ひな形にあてはめると、このようになります。①~③を各自の環境・目的に合わせて置き換えましょう。
1 |
forfiles /s /p "C:\Users\ymori\OneDrive\ドキュメント\もりさんのプログラミング手帳" /c "cmd /c if @fsize gtr 1048576 echo @fdate @fsize @path" > result.csv |
コマンドプロンプトを起動する
コマンドプロンプトって何?と気になる方は、こちらの記事で解説しているのでご確認くださいね。
もちろん、上記の記事を読まなくても作業できるように解説していきますのでご安心を!
まず、キーボードの Windowsキー + R を押します。
「ファイル名を指定して実行」のダイアログにcmdと入力し、OK。
コマンドプロンプト(黒い画面)が起動しました。
コマンドを入力する
この画面に、先ほど作成したコマンドを入力します。
※長いコマンドを入力するのは大変なので、あらかじめメモ帳などにコマンドを作成しておき、それをコピー&貼り付けしましょう!
貼り付け方法は、下記のいずれかで可能です(バージョンによって異なる)
- Ctrl + V
- マウスを右クリック
- マウスを右クリック → 貼り付け
カーソルが点滅している間は実行中です!
実行中の待っている時間は、他の作業をしていて大丈夫です。ただし、この画面には触らないように気をつけましょう!
下記のように、パスが表示されたら処理終了です。
結果ファイルを確認する
コマンド実行結果がCSVファイルで出力されます。
- 出力先 … コマンドプロンプトに表示されているパス(赤枠)
- 出力ファイル名 … コマンドで指定した名前(水色枠)
結果ファイルには、下記の3つの情報が出力されています。私は出力条件を1MB以上(1048576バイト)と指定したので、それに合致するファイルのみが出力されています。
- 最終更新日
- ファイルサイズ(バイト単位)
- ファイルのフルパス
コマンドプロンプトを終了する
コマンドプロンプトはもう使わないので、終了します。exitと入力してEnterキーを押すと画面が閉じます。
結果ファイルを見やすく加工しよう
出力したCSVファイルを整えていきます。まずは、CSVからExcelに変換しましょう。
[最終更新日][ファイルサイズ][ファイルパス]の3つのデータが、スペース区切りで1行になっています。これらをスペースで分割します。Excelの「区切り位置」の機能を使います。
①データが存在する範囲を選択して、②データタブの、③区切り位置を選択
「カンマやタブなどの~」を選択して、「次へ」
区切り文字「スペース」を選択し、次へは押さず、「完了」
A列・B列・C列に分割できました!
あとは、1行目にヘッダーを付けて、ファイルサイズをKB・MBに変換すると見やすくなります。このあたりはお好みで加工しましょう。
ファイルサイズの単位 | バイトに換算すると |
---|---|
1B(バイト) | 1 |
1KB(キロバイト) | 1024 |
1MB(メガバイト) | 1024^2 =1,048,576 |
forfilesコマンドの解説
1 |
forfiles /s /p "[フォルダのフルパス]" /c "cmd /c if @fsize gtr [ファイルサイズ] echo @fdate @fsize @path" > [出力ファイル名].csv |
コマンド | 意味・処理内容 |
---|---|
forfiles | 指定のフォルダやファイルを抽出し、それを元にして、指定されたコマンドを実行する |
/s | サブディレクトリに対しても処理する |
/p | ファイル検索を開始するパスを表す |
/c | 実行するコマンドを指定。コマンドはダブルクオートで囲む |
if @fsize gtr xxx | もし、@fsize(ファイルサイズ)がxxx以上なら ※gtrはgreater than(~以上)の意味 |
echo | 結果を出力する |
@fdate | 最終更新日 |
@fsize | ファイルのサイズ |
@path | ファイルのフルパス |
> [xxx].csv | xxxという名前のcsvファイルに出力する |
この方法でファイルを洗い出せば、巨大なゴミファイルが意外なフォルダに眠ってた!なんて発見ができるかもしれませんよ!