一括で複数のフォルダやファイルをドラッグ&ドロップし、ファイルフルパス・ファイル名・更新日時・サイズなどのファイルのみ(フォルダは含まない)のリストをCSVファイル出力して、Excelで表示するイメージ映像です。
Windwosバッチは簡単な処理であればいろいろ融通が効くと思うので、目的に合っていない場合は適当にカスタマイズしてみてください。
@echo off rem ################################################################################################# rem (ファイル名) rem file_list_out.bat rem (処理概要) rem フォルダやファイルをドラッグ&ドロップしたファイルのみの情報をCSV出力 rem (注意事項) rem ・対象パス配下にあるファイル数があまりに多い場合は非常に時間がかかる。 rem ・ネットワーク上のフォルダやファイルを指定する場合はネットワークドライブに割り当てる必要がある。 rem ################################################################################################# rem ############## rem 遅延環境変数 rem ############## setlocal enabledelayedexpansion rem ########## rem 初期処理 rem ########## rem -----引数----- rem ドラッグ&ドロップ set INPUT_PATH=%~1 rem -----引数チェック----- rem クリック起動チェック(ドラッグ&ドロップのみOK、ダブルクリック起動はNG) if "%INPUT_PATH%"=="" echo ドラッグ&ドロップしてください(複数可)& timeout 3& exit rem -----設定----- rem 自フォルダ set DIR_HOME=%~dp0 rem 日付・時刻・秒 call :YYYYMMDDHHMMSS_GET rem ファイル出力対象ファイル set FILEOUT_TARGET_FILE=%DIR_HOME%!W_YYYYMMDDHHMMSS!_FILE_LIST.csv rem ############ rem メイン処理 rem ############ rem -----タイトル出力----- echo ファイルフルパス,ファイル名,更新日時,サイズ>> "!FILEOUT_TARGET_FILE!" rem -----ドラッグ&ドロップした複数のフォルダやファイル分ループ----- for %%F in (%*) do ( rem 対象パス取得 set TARGET_PATH=%%~F rem 属性チェック call :ATTRIBUTE_CHK "!TARGET_PATH!" if "!W_FOLDER_FILE_KBN!"=="1" ( rem ファイルの場合 rem ファイル名抽出 call :PATH_UNDER_GET "!TARGET_PATH!"& set FILE_NM=!W_UNDER_NM! rem リスト出力 call :FILE_TIMESTAMP_SIZE_GET "!TARGET_PATH!" echo !TARGET_PATH!,!FILE_NM!,!W_FILE_TIMESTAMP!,!W_FILE_SIZE!>> "!FILEOUT_TARGET_FILE!" ) else ( rem フォルダの場合 rem 1フォルダ内のフォルダやファイル分ループ for /F "DELIMS=" %%A in ('dir /b /s "!TARGET_PATH!"') do ( rem 絶対パス set FULL_PATH=%%A rem 属性チェック call :ATTRIBUTE_CHK "!FULL_PATH!" rem ファイルの場合のみ if "!W_FOLDER_FILE_KBN!"=="1" ( rem ファイル名抽出 call :PATH_UNDER_GET "!FULL_PATH!"& set FILE_NM=!W_UNDER_NM! rem リスト出力 call :FILE_TIMESTAMP_SIZE_GET "!FULL_PATH!" echo !FULL_PATH!,!FILE_NM!,!W_FILE_TIMESTAMP!,!W_FILE_SIZE!>> "!FILEOUT_TARGET_FILE!" ) ) ) ) echo.& echo ドラッグ&ドロップしたフォルダ配下のファイルリスト「!FILEOUT_TARGET_FILE!」を出力しました。 rem notepad !FILEOUT_TARGET_FILE! exit /B rem ########################################################### rem (共通部品)日付・時間・秒をYYYYMMDDHHMMSS形式で取得 rem ・半角スペースを0に置換 rem 「 9:39:50.87」→「09:39:50.87」 rem ^ rem ・日付・時間を抽出 rem 0123456789 01234567890 rem 「2019/03/03」→「20190303」+「09:39:50.87」→「093950」 rem ^^^^ ^^ ^^ ^^ ^^ ^^ rem ########################################################### :YYYYMMDDHHMMSS_GET set W_TIME=!time: =0! set W_YYYYMMDDHHMMSS=!Date:~0,4!!Date:~5,2!!Date:~8,2!!W_TIME:~0,2!!W_TIME:~3,2!!W_TIME:~6,2! exit /B rem ############################################ rem (共通部品)ファイルの更新日時とサイズ取得 rem ・ファイルの日付/時刻に展開 rem 例)2019/03/03 09:54 rem ・ファイルのサイズに展開 rem 例)1936 rem ############################################ :FILE_TIMESTAMP_SIZE_GET set W_FILE_TIMESTAMP=%~t1 set W_FILE_SIZE=%~z1 exit /B rem #################################################### rem (共通部品)パス再下層取得 rem ・"\"を含むフルパスから、 rem 最下層のフォルダまたはファイルのみになるまで rem 文字列編集して再帰的ループ(~\を削っていく) rem 例)「C:\Windows\Temp」 →「Temp」取得 rem 「C:\Windows\Temp\temp.txt」→「temp.txt」取得 rem #################################################### :PATH_UNDER_GET set W_UNDER_NM=%~1 if "%W_UNDER_NM%"=="" exit /B if "%W_UNDER_NM%"=="%W_UNDER_NM:*\=%" exit /B set W_UNDER_NM="%W_UNDER_NM:*\=%" call :PATH_UNDER_GET %W_UNDER_NM% exit /B rem ############################################### rem (共通部品)属性チェック rem ・フォルダかファイルかをチェック rem ・ファイルファイル区分(0:フォルダ,1:ファイル) rem ############################################### :ATTRIBUTE_CHK set W_ATTR=%~a1 if %W_ATTR:~0,1%==d (set W_FOLDER_FILE_KBN=0) if %W_ATTR:~0,1%==- (set W_FOLDER_FILE_KBN=1) exit /B