Windows 11を使いこなしていると、フォルダー内のファイルを一覧で確認するだけでなく、更新日時や種類、サイズなどの詳細情報も一緒に印刷して整理したくなることがあります。社内の資料作成やバックアップの確認など、意外と出番は多いですよね。この記事では、コマンドプロンプトやWindows PowerShell 5.1を使ってファイルリストを取得し、編集や印刷に活かす方法を解説します。日本語のファイル名を扱うCSVでは文字コードを明示し、一覧を作る対象と保存先を分けるのがポイントです。
フォルダー内ファイルを出力するメリット
フォルダー内のファイルをただ眺めるだけではなく、一覧表として出力するメリットは想像以上に多いです。私自身、社内資料を作成するときに「どのファイルが更新されているのか」「どれくらいのサイズなのか」をパッと把握したい場面がしばしばありました。いちいちエクスプローラーでソートし直すのも手間ですし、何より一覧を印刷して関係者に共有したいと思うこともありました。
更新日時やサイズを記録しておきたい理由
更新日時は、前回の一覧と比較して変更候補を見つける手がかりになります。ただし、最終更新日時だけでは編集者、過去の変更履歴、バックアップの成功や内容の一致までは確認できません。これらは監査ログ、バージョン履歴、バックアップ側の検証結果などで別に確かめます。また、サイズの大きなファイルが増えてきた際に、どれを整理・削除するかを検討するうえでもサイズ情報は見逃せません。
種類(Type)の確認はどうして難しいのか
エクスプローラーで表示される「種類」をそのままコマンドで取得できるかというと、実は少々難しいです。Windowsでコマンドプロンプトのdirコマンドを使う場合、「ディレクトリかどうか」を示す簡易的な表記しか得られません。これは、エクスプローラー上で表示される「種類」の情報が、レジストリなどを経由して判別している点と関係があります。
通常のGet-ChildItemで得られる拡張子と、エクスプローラーの表示名は別です。Windows Shellには種類の表示名を表すSystem.ItemTypeTextがありますが、この記事の簡単な一覧ではExtension(拡張子)を記録します。拡張子や表示名だけで実際の内容・安全性を保証することはできません。

私も「種類」を出そうとして苦労したことがあります。結局は拡張子とファイルサイズを総合的に見て判断しましたが、最初は同じ表記で取得できると思い込んでいたんですよね。
エクスプローラーでの印刷との違い
エクスプローラー上で「表示形式を切り替えて、一覧をプリントアウトできないのか」と考える方もいるかもしれません。しかし、Windowsの標準機能では直接ファイル一覧表を紙に印刷する機能は用意されていません。Ctrl + Aでファイルを選択して「パスのコピー」を行っても、貼り付けできるのはファイルパス(またはファイル名)のみといった制限があります。
そのため、コマンドプロンプトやPowerShellを利用してリスト化し、Excelなどで整形してから印刷する方法が現実的というわけです。
コマンドプロンプトで簡易的に出力する方法
Windowsで昔から使われているコマンドプロンプト(cmd.exe)を利用すると、追加ソフトウェアをインストールせずに手軽にファイル一覧をテキストとして出力できます。会社のPCなどでインストール制限がある場合も、この方法ならハードルが低いでしょう。
基本のdirコマンド
ファイル一覧を出力する代表的なコマンドとして、dirコマンドがあります。よく使われるオプションには以下のものがあります。
| オプション | 概要 |
|---|---|
| /s | サブフォルダも含めてファイルを一覧表示 |
| /b | ファイル名・フォルダー名だけを表示(/sとの併用ではフルパス) |
| /tc | 作成日時を表示 |
| /ta | 最終アクセス日時を表示 |
| /tw | 最終更新日時を表示 |
ファイル名だけでなくサイズや日時を取得する
dirコマンドでファイル情報を詳しく表示するためには、/b(ベーシック表示)を外して実行します。次はコマンドプロンプト(cmd.exe)用です。Windows Terminalを使う場合も、PowerShellではなくコマンドプロンプトのタブを開いてください。対象パスを自分のフォルダーへ置き換え、出力先に同名ファイルがないことを確認します。
dir "C:\Users\Sample\Documents" /s /t:w > "%USERPROFILE%\filelist.txt"
この例では、サブフォルダーも含めたファイルとフォルダーの一覧を、ユーザープロファイル直下のfilelist.txtへ保存します。ファイルサイズはバイト単位です。既定では隠し・システム項目を表示しません。>は同名ファイルを上書きするため、残したい一覧がある場合は出力名を変えてください。調査対象の配下へ保存すると出力ファイル自身が一覧へ混ざることがあるので、対象外の保存先を選びます。
アクセス拒否などが表示された一覧は完全ではありません。また、cmdの文字コードと開くアプリの解釈によって文字化けする場合があります。日本語・特殊文字を含む名前やExcelでの列分けには、次のUTF-8のCSV出力を使う方が扱いやすくなります。
出力データを印刷に活用するには
dirコマンドの出力をそのまま印刷すると味気ないテキストですが、メモ帳やテキストエディタで整形して、自分が必要な部分だけを取り出して印刷することもできます。列の揃え方などを工夫すれば、読みやすさを格段に向上させられます。
また、Excelに貼り付けたい場合は、まずテキストファイルの内容をコピペし、区切り位置機能などを使って列に分割すると日付やサイズの列を分割して扱いやすくなります。
PowerShellで詳細情報をExcel用にCSV出力
Windows 10以降では、標準でPowerShellが搭載されており、追加ソフトをインストールしなくても利用できます。PowerShellはコマンドプロンプトよりもオブジェクト指向に基づいたデータ取得ができるので、Excelで扱いやすいCSV形式に直接出力するのに便利です。
Get-ChildItemとExport-Csv
PowerShellではGet-ChildItemで列挙し、Select-Objectで必要な情報を選んでExport-Csvで保存します。以下はWindows PowerShell 5.1用です。通常は管理者として実行する必要はなく、自分が読み取れるフォルダーと書き込める保存先を使います。$rootを実際の対象に置き換え、$outは対象フォルダーの外にある、まだ存在しないCSV名にします。
$root = 'C:\Users\Sample\Documents'
$out = Join-Path $env:USERPROFILE 'filelist.csv'
try {
$files = @(Get-ChildItem -LiteralPath $root -File -Recurse -ErrorAction Stop)
if ($files.Count -eq 0) {
Write-Warning '対象ファイルが0件のため、CSVは作成していません。'
} else {
$files | Sort-Object FullName |
Select-Object Name, FullName, Extension, LastWriteTime, Length |
Export-Csv -LiteralPath $out -NoTypeInformation -Encoding UTF8 -NoClobber -ErrorAction Stop
Write-Output "保存先: $out"
}
} catch {
Write-Error "一覧の取得またはCSV出力を完了できませんでした: $_"
}
出力列はName(ファイル名)、FullName(フルパス)、Extension(拡張子)、LastWriteTime(最終更新日時)、Length(バイト数)です。FullNameがあるため、別フォルダーの同名ファイルも区別できます。-Fileでフォルダー行を除き、-LiteralPathで角括弧などを含むパスをそのまま扱います。直下だけが必要なら-Recurseを外します。
Windows PowerShell 5.1のExport-Csvは既定がASCIIなので、文字コードの省略は避けます。この例の-Encoding UTF8はBOM付きUTF-8になります。PowerShell 7では同じ指定がBOMなしになるため、Excel向けにBOM付きでそろえるなら-Encoding utf8BOMに変更してください。CSVを単純なカンマ分割で加工せず、ExcelのCSV取り込みを使います。
-NoClobberは既存CSVの上書きを防ぎます。再実行時は別名へ変更してください。列挙が成功してからCSVを書き始めるため、取得中のアクセス拒否などはcatchで知らせ、新しい一覧の出力へ進みません。0件の場合も新規CSVは作りません。以前のCSVが残っていても今回の成功結果とはみなさず、表示されたメッセージを確認します。書き込み中に失敗したファイルも完成版として使わないでください。
この例は隠しファイルを含めません。必要な場合だけGet-ChildItemへ-Forceを追加できますが、アクセス権は回避できません。大量の項目はメモリと時間を使うため、最初は小さなフォルダーで確認します。取得中に内容が変わるフォルダーの一覧は、ある一時点の完全なスナップショットやバックアップ証明にはなりません。

私が社内でこの方法を使い始めたときは、みんな「こんなに簡単にCSV化できるのか」と驚いていました。ちょっとした工夫で見やすい一覧表が作れるので、重宝しています。
種類欄が必要な場合の工夫
簡単な一覧なら、上の例にあるExtension列を分類用に使えます。たとえば「.pdfならPDF書類」といったチーム内の分類名を別列へ付ける方法です。これはエクスプローラーの種類表示を再現するものでも、ファイルの内容を検証するものでもありません。Shellの表示名が必要ならSystem.ItemTypeTextを参照する別実装が必要で、表示名を機械的な分類の固定キーにはしないでください。
CSVやテキストで取得したデータの整形・印刷テクニック
ファイル一覧を出力したあとは、どのように整形して印刷するかがポイントです。特にExcelに読み込んだデータであれば、自分好みの列幅やフォントサイズに変更することで、見やすい資料がすぐに作れます。
Excelでの区切り設定
CSVはExcelのデータ → テキストまたはCSVからで取り込み、文字コードをUTF-8、区切りをカンマとしてプレビューを確認します。データ型の自動検出を行わない設定でまず全列をテキストとして取り込み、必要に応じてデータの変換でLengthなどの列だけ型を変更します。Name・FullName・Extensionはテキスト型のままにしてください。先頭のゼロや日付のような名前の自動変換を避けられます。外部から受け取ったファイル名を含むCSVはダブルクリックで開かず、=などで始まる値も数式ではなく文字列として扱います。CSVを引用符で囲むことだけでは数式対策にはなりません。
Lengthはバイト数なので、1,024で割ればKiB、1,048,576で割ればMiBです。表示用に丸めても、元のバイト数は別列で残すと照合に使えます。
印刷するときの注意点
Excelでレイアウトを整えたあとは、改ページプレビューを活用して用紙いっぱいに収めるようにしましょう。更新日時やファイルサイズなど、列が増えると紙面に収まらなくなる場合があります。必要な情報だけを残し、不要な列は削除して印刷用にカスタマイズすると良いです。
追加の有料・フリーソフトを使わない理由
社内PCなどで管理者権限がない場合、フリーソフトのインストールも難しいことがあります。dirやWindows PowerShellは追加インストールを必要としません。ただし、組織のアプリ制御やアクセス権によって実行・読み取り・保存が制限される場合があります。制限を回避せず、必要なら管理者へ確認してください。
また、システムを慎重に管理しなければならない企業や公共機関では、セキュリティ上の理由から新たなソフトウェアを導入できないケースも多いです。標準コマンドでも、ファイル名や内部パスを含む一覧の保存・印刷・共有には組織の情報管理ルールが適用されます。
自分の工夫次第で拡張性もアップ
dirコマンドやPowerShellは、ちょっとしたバッチファイルやスクリプトを組むことで出力結果の加工・分析を自動化できます。たとえば、古い更新日時のファイルだけを抽出してリストにするスクリプトを作れば、定期的に実行して不要ファイルのメンテナンスがしやすくなります。これらの工夫は、フリーソフトや有料ソフトに頼らずに独自開発できる点が魅力です。
まとめ:目的に応じた方法を選ぼう
フォルダー内のファイル一覧を取得して印刷や共有をするには、コマンドプロンプトならdirコマンド、より柔軟な出力が欲しければPowerShellのGet-ChildItemとExport-Csvが便利です。
ファイル名だけでなく日時やサイズを一覧にできるだけでも、管理がかなり楽になると実感するでしょう。エクスプローラーの「種類」情報を完全に再現するのは難しいですが、拡張子やサイズなどを活用して十分に代替することが可能です。
社内で共有するときは、出力が途中で失敗していないか、文字化けや同名ファイルの取り違えがないかを確認し、必要な範囲だけを共有してください。ぜひ自分の環境に合わせたやり方をカスタマイズして、効率よくファイル管理を行ってみてください。

拡張子、種類の表示名、実際のファイル内容は別物です。印刷用の分類にはExtension列を使い、内容や安全性の確認までできたと思い込まないことが大切です。
公式資料
- Microsoft Learn:dir
- Microsoft Learn:Get-ChildItem(Windows PowerShell 5.1)
- Microsoft Learn:Export-Csv(Windows PowerShell 5.1)
- Microsoft Learn:PowerShellの文字コードとBOM
- Microsoft Learn:System.ItemTypeText
- Microsoft Support:テキスト・CSVの取り込み
- Microsoft Learn:Text/CSVの文字コード・区切り・データ型検出
- Microsoft Learn:FileSystemInfo.LastWriteTime



コメント