ホーム 芸能ニュース・ゴシップ サブフォルダも含めて再帰的に走査

サブフォルダも含めて再帰的に走査

黒沢 武史 黒沢 武史 • 更新: • 公開: • 読了約 13 分
目次
フォルダ内のファイル名取得完全ガイド!コピペ地獄を脱する裏ワザ

日々のデスクワークで、フォルダ内に並ぶ膨大なファイル名をひとつずつ手作業でコピー&ペーストしていないでしょうか。ファイル名を「F2」キーで選択し、コピーしてExcelに貼り付ける作業を何十回、何百回と繰り返すのは、貴重な業務時間を浪費するだけでなく、転記ミスのリスクを抱える典型的な非効率作業です。

実務の現場では、専用の有料ソフトを導入しなくても、手元にあるWindowsの標準機能やExcelの既存ツール、PowerShell、Macの標準ショートカットを駆使するだけで、一瞬にして正確なファイル名一覧を作成できます。本記事では、初心者でも迷わずできる基本技から、定期業務を自動化する応用スクリプトまで、ファイル名リスト化の決定打となるテクニックを分かりやすく解説します。

【最速&ノンプログラミング】Excelパワークエリでフォルダ内のファイル名を取得する

フォルダ内のファイル名を取得

プログラミングや黒い画面(コマンド)に抵抗がある方に最もおすすめなのが、Excelに標準搭載されている「Power Query(パワークエリ)」の活用です。一度設定しておけば、フォルダ内に新しいファイルが追加された際も「すべて更新」ボタンを押すだけで一覧が自動更新されます。

手順は極めてシンプルです。まずExcelを起動し、リボンの「データ」タブから「データの取得」>「ファイルから」>「フォルダーから」を選択します。対象のフォルダを指定すると、フォルダ内のファイル一覧プレビュー画面が開くため、右下の「データの変換」をクリックします。

パワークエリ エディターが起動したら、必要な列(ファイル名を表す「Name」列や拡張子列、更新日時列など)だけを残し、不要な列を削除します。最後に左上の「閉じて読み込む」をクリックすれば、ワークシート上に美しいテーブル形式でファイル名一覧が出力されます。ファイル名のリスト化を簡単かつ継続的に行いたい場合の最も堅牢な選択肢です。

【Windows標準機能】コマンドプロンプト&PowerShellで一瞬でファイル名をテキスト化

Excelすら開かずにテキストファイルやクリップボードへ一瞬でファイル名を吸い出したい場合は、Windows標準のコマンドラインツールが威力を発揮します。特別なツールのインストールが禁止されている社内PCでも即座に実行可能です。

コマンドプロンプトを使う場合、対象フォルダを開いた状態でアドレスバーに「cmd」と入力してEnterキーを押します。コマンド画面が立ち上がったら、以下のコマンドを入力します。

dir /b > list.txt

この一行を実行するだけで、フォルダ内にファイル名のみが記載された「list.txt」が瞬時に生成されます。さらに、直接クリップボードにコピーしてExcel等に貼り付けたい場合は、以下のコマンドを打ち込むだけで完了します。

dir /b | clip

また、より柔軟なデータ処理が可能なPowerShellを利用する場合は、以下の1行を実行することで、拡張子やフルパスを含めた柔軟な抽出が可能です。

Get-ChildItem -File | Select-Object -ExpandProperty Name | Set-Clipboard

このコマンドを実行すると、フォルダ直下のファイル名一覧が直接クリップボードへ格納されるため、そのまま目的のドキュメントへペーストできます。

【自動化の王道】Excel VBAとバッチファイルで定期業務を完全自動化

「毎週末に特定フォルダのファイルを台帳に転記する」「ワンクリックで誰でも同じフォーマットで出力させたい」という現場では、VBA(マクロ)やバッチファイル(.bat)による定型化が有効です。

Excel VBAを活用する場合、FileSystemObject(FSO)を用いることで、フォルダ選択ダイアログを表示しながらセルにファイル名を順番に書き出す仕組みを構築できます。

Sub GetFileNameList()
    Dim fso As Object, folder As Object, file As Object
    Dim folderPath As String, i As Long
    
    folderPath = "C:\TargetFolder\" '対象フォルダのパスを指定
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set folder = fso.GetFolder(folderPath)
    
    i = 1
    For Each file In folder.Files
        Cells(i, 1).Value = file.Name
        Cells(i, 2).Value = file.DateLastModified
        i = i + 1
    Next file
End Sub

一方、PCに不慣れな担当者と共有する場合は、テキストファイルに「dir /b /a-d > ファイル名一覧.txt」と記述し、拡張子を「.bat」に変更したバッチファイルを作成して対象フォルダに配置しておくだけで、ダブルクリックするだけで一覧が生成される環境が整います。

【Macユーザー必見】Finderのコピペ裏ワザとターミナルでの一括取得

Mac環境でも、サードパーティ製アプリを使わずに標準機能だけでファイル名をテキストとして取得する裏ワザが存在します。

最も手軽なのはFinderの標準ショートカットを利用する方法です。対象フォルダ内でファイル群を全選択(Command + A)した状態で、「Command + C」でコピーします。その後、テキストエディタ(テキストエディットやメモアプリ)を開き、「Command + V」で貼り付けるだけで、ファイル名一覧が改行区切りのテキストとしてペーストされます。

フルパスや詳細な情報を取得したい場合は、ターミナルを活用します。ターミナルを起動し、対象ディレクトリに移動して以下のコマンドを実行します。

ls -1 > filelist.txt

「-1(数字の1)」オプションを付与することで、1行に1ファイルずつ整然と並んだテキストファイルを出力できます。

【応用ワザ】サブフォルダ一括取得と「拡張子なし」ファイル名の抽出テクニック

実務で頻出するのが、「深い階層にあるサブフォルダ内のファイルもまとめて一覧化したい」あるいは「末尾の『.pdf』や『.xlsx』といった拡張子を除いたファイル名だけが欲しい」というケースです。

サブフォルダを含めて一括取得したい場合、コマンドプロンプトでは「/s」オプションを付加します。

dir /b /s /a-d > all_files.txt

これにより、配下に存在するすべてのサブフォルダを再帰的に走査し、ファイル名の一覧をパス付きで書き出します。

拡張子を除外して取得したい場合は、PowerShellを使うのが最もスマートです。以下のコマンドを実行することで、拡張子をカットした純粋なファイル名のみをクリップボードにコピーできます。

Get-ChildItem -File | ForEach-Object { [System.IO.Path]::GetFileNameWithoutExtension($_.Name) } | Set-Clipboard

Excel上で処理する場合は、PowerQueryの「列の分割(最後のピリオドで分割)」機能を利用するか、関数「=TEXTBEFORE(A1, ".", -1)」を用いることで、拡張子なしの文字列を容易に抽出できます。

【エンジニア・データ処理向け】Pythonで大量ファイルを高速一覧化・属性抽出

数千から数万件規模の膨大なファイルを処理する場合や、ファイルサイズ、作成日時、ハッシュ値など詳細なメタデータとあわせて集計したい場合は、Pythonのスクリプトが最適です。

標準ライブラリのpathlibモジュールを使用することで、OSに依存しない簡潔なコードで一覧を作成し、pandas経由でCSVやExcel形式へ書き出せます。

from pathlib import Path
import pandas as pd

target_dir = Path("./target_folder")
file_data = []

for file_path in target_dir.rglob("*"):
    if file_path.is_file():
        file_data.append({
            "フォルダ": str(file_path.parent),
            "ファイル名(拡張子あり)": file_path.name,
            "ファイル名(拡張子なし)": file_path.stem,
            "拡張子": file_path.suffix,
            "サイズ(KB)": round(file_path.stat().st_size / 1024, 2)
        })

df = pd.DataFrame(file_data)
df.to_excel("ファイル一覧台帳.xlsx", index=False)

このスクリプトを使えば、巨大な共有サーバー内のデータ棚卸しやアーカイブ作業もわずか数秒で完結します。

【フォルダ内のファイル名取得】に関するよくある質問(FAQ)

Q1:会社支給のPCでフリーソフトの導入が禁止されていますが、ファイル名の一覧取得は可能ですか?
A1:完全に可能です。Windowsに標準搭載されている「Excelパワークエリ」「コマンドプロンプト」「PowerShell」を使えば、外部ツールのインストールや管理者権限がなくても安全にファイル名を抽出できます。

Q2:ファイル名一覧を取得する際、不要なフォルダ名(ディレクトリ名)を除外してファイルだけを抽出できますか?
A2:コマンドプロンプトの場合、「/a-d」オプションを追加することでフォルダを除外できます(例:dir /b /a-d)。PowerShellでは「Get-ChildItem -File」と指定すれば純粋なファイルのみが抽出対象となります。

Q3:日本語のファイル名が含まれている場合、文字化けを防ぐにはどうすればよいですか?
A3:コマンドプロンプトのリダイレクトで出力したテキストは通常Shift-JISで保存されます。PowerShellでUTF-8出力したい場合は、「Out-File -Encoding utf8 list.txt」をパイプで繋ぐことで文字化けを確実に防止できます。

フォルダ内のファイル名を取得する作業は、日常業務において頻繁に発生するルーティンのひとつです。単発の簡易作業であればコマンドプロンプトの「dir /b | clip」やMacのコピペ機能、定期的なレポート作成であればExcelパワークエリの自動同期、大量データの体系的な整理であればPythonやPowerShellと、状況に応じた使い分けが業務効率を飛躍的に高めます。

手作業によるコピー&ペーストから脱却し、正確で高速な標準機能を日々のワークフローへ取り入れてみてください。

同じカテゴリの記事

黒沢 武史
トレンドリサーチャー 黒沢 武史
プロフィールを見る →

芸能取材歴14年。事務所の公式リリース、番組公式サイト、配信サービスの告知だけを一次情報として扱い、出典のない話は記事にしません。

おすすめの関連記事