【Windowsバッチファイル(.bat)】ファイルリストをCSV形式で出力する


この記事はプロモーションを含みます。

Windows

ホーム > コマンドプロンプト・バッチファイル リファレンス

Windowsのバッチで、ファイルリスト(パス、ファイル名)をCSV形式で出力する方法を解説します。

はじめに

先日、バッチでCSV形式のデータを書き出す方法を説明しました。
本記事では、パスとファイル名を含むファイルリストをCSV形式で書き出す方法を説明します。

バッチファイル

サンプルのバッチファイルです。
ここでは例として、テストフォルダ配下にあるファイルの一覧を取得し、
パスとファイル名をCSV形式で出力します。
CSVファイルは、バッチファイルと同じフォルダに出力するようになっています。

@echo off

set csv=filelist.csv

del %csv%

setlocal enabledelayedexpansion

for /f %%i in ('dir /b /s テストフォルダ') do (

	call :GET_FILEPATH %%i
	call :GET_FILENAME %%i
	echo !filepath!,!filename!>>%csv%

)

endlocal

pause
exit

:GET_FILEPATH
set filepath=%~dp1
exit /b

:GET_FILENAME
set filename=%~nx1
exit /b

実行結果

バッチの実行結果です。
以下のようなCSVファイルが出力されます。

V:\workspace\テストフォルダ\,ファイル1.txt
V:\workspace\テストフォルダ\,ファイル2.txt
V:\workspace\テストフォルダ\,ファイル3.txt

バッチを実行すると、以下のようなターミナルが表示されます。
これを消したい場合は、19行目の「pause」を削除して下さい。

続行するには何かキーを押してください . . .

パスの最後にある\を消す

パスの最後についている「\(円マーク)」を消す場合は以下のようなコードになります。
24行目の処理が、末尾1文字を削除する処理になります。

@echo off

set csv=filelist.csv

del %csv%

setlocal enabledelayedexpansion

for /f %%i in ('dir /b /s テストフォルダ') do (

	call :GET_FILEPATH %%i
	call :GET_FILENAME %%i
	echo !filepath!,!filename!>>%csv%

)

endlocal

pause
exit

:GET_FILEPATH
set filepath=%~dp1
set filepath=%filepath:~0,-1%
exit /b

:GET_FILENAME
set filename=%~nx1
exit /b

上記の実行結果です。

V:\workspace\テストフォルダ,ファイル1.txt
V:\workspace\テストフォルダ,ファイル2.txt
V:\workspace\テストフォルダ,ファイル3.txt

コメント

タイトルとURLをコピーしました