見出し画像

【バッチ処理】どう書くんだっけ?『サブディレクトリを含むディレクトリからすべてのファイルの一覧を表示する』

どうも lingmu です。
今回はバッチ処理でサブディレクトリを含むディレクトリからすべてのファイルの一覧を表示する方法を書きます。これだけでは特に役に立ちません。

1. やりたいこと

 今回は、『サブディレクトリを含むディレクトリからすべてのファイルの一覧を画面に表示する』ことを実現したいことと仮定します。

2. どう書くんだっけ?

@rem -----------------------------------------------------------------------------
@rem 【ファイル名】:GetFileList.bat
@rem 【機能】:ファイルの一覧出力機能
@rem 【概要】:サブディレクトリを含むディレクトリからすべてのファイルの一覧を
@rem           別ファイルに書き出すバッチ処理
@rem 【使用方法】:GetFileList.bat <ディレクトリパス>
@rem        例)GetFileList.bat C:\work
@rem -----------------------------------------------------------------------------
@echo off
for /r %1 %%f in (*.*) do (
    echo %%~dpf%%~nxf
)

 2.1 解説

 実装内容について簡単に解説を書きます。

 (1)@echo off で実行中のコマンドを非表示に切り替えています。
    ※@echo off がない場合、実行されるコマンドも表示されるため、表示内容が煩雑になります。
    ※@rem はバッチファイルのコメント表記になります。

 (2)for 文で繰り返し処理をしています。
    /r %1 の /r は for 文のオプションでサブディレクトリも含めることを意味しています。%1 は引数で指定されたパラメータ(つまり、ディレクトリパス)を意味しています。
    %%f in (*.*) で全てのファイル(*.*)が順次 %%f に格納されることになるので、ファイル毎に do ( ... ) の処理が行われます。

 (3)echo %%~dpf%%~nxf でパスを含むファイル名を画面に表示します。%%~dpf でドライブ文字(C:)とパスを表示し、%%~nxf でファイル名と拡張子を表示しています。

【注意事項】
 ・for 文の %%f は、バッチファイル(*.bat)にする場合の書き方で、コマンドプロンプト上で直接実行する場合は %f としてください。詳細は 4. 参考サイトをご参照ください。

3. 動作を確認する

C:\> GetFileList.bat C:\work
C:\work\1-4_出力結果.txt
C:\work\file1-1.txt
C:\work\file1-2.txt
C:\work\file1-3.txt
C:\work\file1-4.txt
C:\work\出力結果1-4.txt

4. 参考サイト

 ■対象 | Microsoft Docs
  https://docs.microsoft.com/ja-jp/windows-server/administration/windows-commands/for

おわり

 以上です。

この記事が気に入ったらサポートをしてみませんか?