キーワード†
- Windows
- bat
- tsv
したいこと†
tsvを読んでファイルをコピーしたい、バッチで。
tsvには次のような感じでコピー元とコピー先が定義されているとする。
path\to\コピー元ファイル1 path\to\コピー先ファイル1 path\to\コピー元ファイル2 path\to\コピー先ファイル2 ...
どうやって†
こう書いた。
@cd /d %~dp0 @echo off set FOLDER_SRC=C:\path\to\コピー元ルートフォルダ set FOLDER_DST=C:\path\to\コピー先ルートフォルダ rem ### main for /f "delims= tokens=1,2" %%i in (filelist.tsv) do ( set FILE_SRC=%FOLDER_SRC%\%%i set FILE_DST=%FOLDER_DST%\%%j call :CopyFile ) exit /b rem ### copy file :CopyFile if exist "%FILE_SRC%" ( copy /y "%FILE_SRC%" "%FILE_DST%" > nul 2>&1 ) else ( echo "%FILE_SRC%" 1>&2 ) exit /b
ちなみに†
久しぶりにWindowsバッチなのでかなり手こずった。。特に「@echo off」に気がつくまでは、なんで動かないでテキスト出力されるのかと戸惑った。
いろいろ脆いけど、ファイル収集用なので気にしない。