「フォルダ内の大量のファイル名を、Excelに一括で一覧にする方法ってないの?」
「サブフォルダも含めて一瞬で整理できたらいいのに…」
と思って、ファイル名をすべて選択してコピーして、エクセルやテキストに貼り付けてもファイル名を貼り付けることができません。
実は、Windowsの標準機能であるPowerShellを使えば、フォルダ内のファイル名を一括で取得し、Excelで管理できるようにCSVやXLSX形式で出力することができます。
この記事では、PowerShell初心者でもコピペだけでできるファイル名取得方法を紹介し、サブフォルダや複数階層にも対応する手順、CSV・Excel形式での出力方法まで、画像付きでわかりやすく解説します。
コピペではファイル名を取得できない!
「たくさんのファイル名を、Excelに一覧でまとめたい。でも、1つずつコピーするのは面倒」
「あっ!そうだ、ファイル名をすべて選択してコピペすればいいんだ!」
でも、これだとファイル名をコピペできないんですよね。
フォルダ内の書類や画像、動画ファイルなどを台帳にまとめたいときに「できないのかぁ」と諦めることが多い場面ではないでしょうか。毎月の経理資料やスキャン済みPDFなど、ファイルの数が多いと、手作業でファイル名をコピペするだけでも大変ですし、ちょっとしたミスでファイル名を間違えたり、順番がずれたりすることもあります。
さらに面倒なのが、ファイルの中にサブフォルダが含まれているケースです。どこに何があるかを探すのも大変で、目的のファイルにたどり着くだけでも時間がかかります。
そんなときに役立つのが、「フォルダ内のファイル名を一括取得する方法」です。
PowerShellを使ってファイル名を一括取得する
PowerShell(パワーシェル)という言葉を聞いたことがあっても、「なんだか難しそう」「使ったことがないから不安」と感じている方も多いのではないでしょうか。実は、私も使うまではそう思っていました。しかし、PowerShellはWindowsに最初から搭載されており、コマンドをコピー&ペーストするだけで、誰でも簡単にファイル名を一括取得できますので、手順通りに作業をして見て下さい。
考えている以上に、簡単にファイル名を一括取得できますので。

- ファイル名を一括取得したいフォルダを開きます。
- アドレスバーに「PowerShell」と入力して「エンター」を押します。

- すると、そのフォルダを基準にしたコマンドが表示されます。
Get-ChildItem -File | Select-Object Name | Export-Csv -Encoding UTF8 -NoTypeInformation file_list.csv
- 上記コマンドをコピーします。

- 「Windows PowerShell」に貼り付けて「エンター」を押します。

「エンター」を押すとフォルダ内にCSVファイルが作成されます。

開くとフォルダ内のファイル名が一覧になって表示されています。
コマンドの紹介
【サブフォルダ内のファイルもまとめて取得したい】
Get-ChildItem -Recurse -File | Select-Object FullName | Export-Csv -Encoding UTF8 -NoTypeInformation file_list.csv
【ファイル名と更新日時を一括で取得したい】
Get-ChildItem -File | Select-Object Name, LastWriteTime | Export-Csv -Encoding UTF8 -NoTypeInformation file_list.csv
【ファイル名・更新日時・ファイルサイズ・作成日・フルパスを取得したい】
Get-ChildItem -File | Select-Object Name, LastWriteTime, Length, CreationTime, FullName | Export-Csv -Encoding UTF8 -NoTypeInformation file_list.csv
【取得しておくと便利なプロパティ一覧】
プロパティ | 内容 |
---|---|
Name | ファイル名(拡張子付き) |
BaseName | ファイル名(拡張子なし) |
LastWriteTime | 最終更新日時 |
Length | ファイルサイズ(バイト単位) |
CreationTime | 作成日時(ファイルが最初に作られた日時) |
LastWriteTime | 最終更新日時 |
LastAccessTime | 最後にアクセス(開いた)日時 |
FullName | ファイルのフルパス(場所を含む) |
DirectoryName | フォルダのパスのみ(ファイル名を除いた部分) |
【コマンドの使い方】
コマンドの中にある「Select-Object」に取得したいプロパティを追加して、「,(カンマ)」で区切ることで複数のプロパティを追加できます。
Excel形式でファイル名を一覧化する方法
ファイル名を一覧化して管理するとき、Excelで管理したいと思っている方が多いと思います。
PowerShellで「XLSX形式」出力することもできますが、PowerShell単体でこの形式を扱うには少しだけ応用が必要です。標準の出力方法ではXLSXに変換されないため、Excelアプリケーションを自動操作するスクリプトを指定してあげる必要があります。
参考までに、PowerShellでXLSX形式としてファイル一覧を出力するスクリプトを紹介します。
$folderPath = "C:\Users\YourName\Documents\TargetFolder"
$outputPath = "$folderPath\file_list.xlsx"
$Excel = New-Object -ComObject Excel.Application
$Excel.Visible = $false
$Workbook = $Excel.Workbooks.Add()
$Worksheet = $Workbook.Worksheets.Item(1)
$Worksheet.Cells.Item(1,1) = "ファイル名"
$Worksheet.Cells.Item(1,2) = "フルパス"
$files = Get-ChildItem -Path $folderPath -Recurse -File
$row = 2
foreach ($file in $files) {
$Worksheet.Cells.Item($row,1) = $file.Name
$Worksheet.Cells.Item($row,2) = $file.FullName
$row++
}
$Workbook.SaveAs($outputPath)
$Workbook.Close($false)
$Excel.Quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($Excel)
ファイル名を一覧取得するなら、CSVで出力して内容確認した後、必要に応じてExcelに変換したほうが整理しやすく、効率化になると思います。
サブフォルダや複数階層に対応する取得方法
実際の業務では、ファイルが複数のサブフォルダに分かれて保存されていることも多いです。例えば、年度別、顧客別、プロジェクト別など、整理のために階層構造を使うのは一般的です。このような構造でも、フォルダごとに手作業でファイル名を取得していては、時間も手間もかかってしまいます。
そこで活用したいのが、PowerShellの-Recurseオプションです。これは、指定したフォルダの中にあるすべてのサブフォルダまで含めて一括取得する機能です。ファイル名を一括で取得する際にこのオプションを使うことで、1階層だけでなく、すべての階層のファイルをまとめて一覧化できます。
「名前」「更新日時」「サイズ」「作成日」「フルパス」も一緒に出力したい場合は、コマンドを使用することで取得できます。
Get-ChildItem -Path "C:\Your\Folder\Path" -Recurse -File |
Select-Object Name, LastWriteTime, Length, CreationTime, FullName |
Export-Csv -Encoding UTF8 -NoTypeInformation "C:\Your\Folder\Path\file_list.csv"
さらに、出力結果の中で「どのフォルダにあるファイルか」を明確に把握したい場合には、FullNameやDirectoryNameのプロパティを追加することで、Excel上でもグループ化や並べ替えがしやすくなります。
もし、フォルダ名だけを一覧で取得したいという場合には、以下のように-Directoryオプションを使います。
Get-ChildItem -Path "C:\Your\Folder\Path" -Recurse -Directory |
Select-Object FullName |
Export-Csv -Encoding UTF8 -NoTypeInformation "C:\Your\Folder\Path\folder_list.csv"
このコマンドを使えば、ファイル名ではなく、すべてのフォルダのパスを一覧化することができ、フォルダ構成の把握や資料作成にも役立ちます。
このように、-Recurseをうまく使うことで、フォルダ構成が複雑な場合でも柔軟に対応できます。ファイルもフォルダも、自動で把握・管理できるようになると、手間のかかる作業が一気に軽減され、作業効率が大幅に向上します。
よくある質問
PowerShellを使ってファイル名を一括取得する方法はとても便利ですが、初めて使用する場合は不安やつまずきも付き物です。ここでは、実際によくある質問やトラブルとその対処法をまとめました。事前に確認しておくことで、安心して作業を進めて頂けると思います。
- コマンドを実行しても何も起きない
-
PowerShellにコマンドを貼り付けてEnterキーを押しても、特に画面に何かが表示されるわけではありません。しかし、エラーが出ていなければ、処理は正常に完了している可能性が高いです。まずは、指定したフォルダ内に「file_list.csv」などの出力ファイルが作成されているかを確認してください。ファイルができていれば問題ありません。
- ファイルが出力されない・CSVが空になる
-
この場合に考えられる主な原因は以下の2つです。
1つは、コマンドを実行しているフォルダにファイルが存在しない場合です(フォルダだけでファイルがないケース)。もう1つは、対象がサブフォルダにあるのに-Recurseオプションを使っていないことです。フォルダ構成に応じて適切なオプションを使用しましょう。また、-Fileを使っていると、フォルダは除外されるので、フォルダも含めたい場合は-Fileを省略するか、別途-Directoryで取得する必要があります。
- 管理者権限で実行しないと動かない?
-
基本的に、今回のようなファイル一覧を取得してCSVに保存するだけの処理であれば、管理者権限は不要です。ただし、セキュリティ設定やフォルダのアクセス権によっては、管理者でないと読み取れない場所もあります。アクセスが拒否されるようなエラーが出た場合は、一度PowerShellを「管理者として実行」してみてください。
- よくあるエラーメッセージとその対処法
-
たとえば、「アクセスが拒否されました」「ファイルが見つかりません」といったエラーが出る場合には、以下の点を確認してください。
- フォルダパスが正しく指定されているか
- ダブルクォーテーション(”)でパスを囲っているか(スペースが含まれる場合は特に重要)
- そのフォルダに読み取り権限があるか
正確な構文で実行するだけで、多くのトラブルは防ぐことができます。
まとめ
手作業でファイル名をコピー&ペーストしていた方法は、手間がかかるうえにミスが発生しやすく、作業効率も悪くなりがちです。しかし、PowerShellを活用すれば、こうした問題を一気に解決することが可能です。
今回紹介した方法では、PowerShellを使ってフォルダ内のファイル名を一括で取得し、更新日時、作成日、サイズ、パスなどの情報も一緒にCSVやExcel形式で出力することができます。初心者でもコマンドをコピペするだけで実行できる点が大きな魅力です。
ファイル一覧の自動取得を習得すれば、作業効率は確実に向上します。ミスやストレスから解放されるだけでなく、「この人は仕事が早い」と評価される場面も増えるかもしれません。ぜひこの記事を参考に、日々の業務改善にPowerShellを役立ててください。
コメント