シェル/bat/tsvを読んでファイルをコピーする
キーワード
- 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」に気がつくまでは、なんで動かないでテキスト出力されるのかと戸惑った。
いろいろ脆いけど、ファイル収集用なので気にしない。
参考
作成日 2017-12-07
