ホーム > コマンドプロンプト・バッチファイル リファレンス
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
リンク
コメント