この記事を読むのに必要な時間は約 6 分です。
ファイル一覧と、更新日時、ファイルサイズを取得したい。
最初に思いつくのがdirコマンドだと思います。
ですが、「/?」を付けてヘルプを見てもイマイチ分からないし使いづらいですよね。
もっと分かりやすくて使いやすいコマンドを今日知りました。
ファイル一覧と、更新日時、ファイルサイズ、簡単に出せたので記事に残しておきます。
目次(リンク)
「dir」コマンドで、更新日時やファイルサイズなどを取得するには
やりたいことは、
- フォルダ配下含め、ファイルの一覧を取得
- ファイルはフルパス
- ファイル毎のファイルサイズを表示
- 更新日時も表示
というわけで、コマンドプロンプトからやっていきます。
コマンドプロンプトが表示されました。
1 |
dir /S /TW |
これで、フォルダ内のファイルも込みで、タイムスタンプやファイルサイズが一応出ます。
ですが、次のような感じなのです。
フォルダが分かれていると、表示がフォルダ毎になってしまうんですよね。
フォルダ毎に分けずに全部フルパスで表示するオプションも確かあったはずですが、すぐに忘れてしまいます。
1 |
dir /? |
で使い方を確認しても、なかなか答えが分かりません。
そこで、もっと分かりやすいwhereコマンドを使うんです!
もっと簡単なコマンド、「where」
動作環境
Windows10、Windows8.1で確認済みです。
この記事では、自宅のWindows10でwhereコマンドを実行しながら書いています。
会社のPCが8.1なので、その場合もちゃんと動くのを確認しました。
コマンドの使い方
構文は次の通りです。
1 |
WHERE [/R ディレクトリ] [/Q] [/F] [/T] パターン |
ディレクトリを指定せず「*」とか書いてしまうと、今いるフォルダではなくCドライブ直下などになってしまいます。
なので指定が必要です。
パターンは、「*.txt」とか、「*.*」など。
アスタリスク「*」がワイルドカードで、なんでも当てはまるという意味です。
whereコマンド使用例
では、ファイル一覧とフルパス、ファイルサイズとタイムスタンプを取得していきましょう。
1 |
WHERE /R C:\Work *.* /T |
「C:Work」のところは、適宜変更してください。
また、間にスペースが入るようなフォルダがある場合は、ダブルクォーテーション「””」で囲んでくださいね。
結果が見やすいように、テキストファイルに出力しました。
1 |
WHERE /R C:\Work *.* /T > C:\Work\hogehoge.txt |
のように書けば、hogehoge.txtというテキストファイルに結果が出力されます。
テキストファイルに結果が出力されました。
左から、ファイルサイズ、タイムスタンプ、ファイルのフルパスです。
whereコマンドの注意点
コメントから、dropさんに注意点をご教示いただきました。
ファイルサイズが2GBを超える場合、実際の値とは違うものとなるそうです。
2GBを超えるサイズを参照するとマイナス値になります。
2GB = 2147483648 byte では -2147483648
2GB -1byte では 2147483647
2GB +1byte では -2147483647 となります。
なお、4GBの場合は+に転じ0byteとなり、4GBごとにこれを繰り返しますので、巨大なサイズファイルを扱う場合は正確な値を知ることは不可能となります。
動画ファイルなど、ファイルサイズが巨大なものが含まれそうな場合は、dirコマンドを検討したほうが良いでしょう。
まとめ:もう次からwhereコマンドでいい
使い方を忘れたときは、「/?」を付ければ確認できます。
ですが、dirコマンドの場合、説明が不親切なのか答えになかなかたどり着けないんですよね。
whereコマンドなら使用例もいくつか載っていて、ワリと分かりやすいです。
ファイルサイズにもよりますが、ファイルの一覧を出したいとき、もうdir使わなくてもwhereコマンドでいいと思います。
ぜひ試してみてくださいね。
最後までお読みいただき、ありがとうございました。
わかりやすかったです。ほしいものが出力できました。ありがとうございます。
こちらを見て取得したファイルサイズが1000単位で、1024単位で表示したいのですが、どうすればよいですか。
Windows画面で表示されるのと同じ単位で出力したいです。
ひよ子さん
コメントありがとうございます!
分かりやすいと言っていただけて嬉しいです!!
すみません、コマンドからファイルサイズの単位を切り替える方法が分からないのですが、Excelなどに貼って1024で割るなど数式を入れて再計算すれば、希望されている単位になるかと思います。
コマンドで出力した際の単位はByteですので、1024で割るとKB、さらに1024で割るとMBとなっていきます。
Windowsのエクスプローラーで表示されているファイルサイズは四捨五入しているように見えますので、
必要があればROUND関数などで四捨五入を行うと良いかもしれません。
=ROUND(ファイルサイズのセル,0) のような感じです。
whereにはバグがあり、記載いただいたほうがいいかもしれません。
2GBを超えるサイズを参照するとマイナス値になります。
2GB = 2147483648 byte では -2147483648
2GB -1byte では 2147483647
2GB +1byte では -2147483647 となります。
なお、4GBの場合は+に転じ0byteとなり、4GBごとにこれを繰り返しますので、巨大なサイズファイルを扱う場合は正確な値を知ることは不可能となります。
このバグレポートが報告済みかどうかは知りませんが、一応。
dropさん、コメントありがとうございます!
返信遅くなり、申し訳ありません。
記事のほうにも注意点として追記しました。