windowsバッチでリストファイルに書かれた内容を1行ずつ処理しながらループする方法

2018.9.28

コード

list.txtに書かれたファイルを順番にコピーするサンプルになります。

list.txtの内容。

file1.txt
file2.txt
file3.txt

copy.batの内容。

@echo off
SET listfile=list.txt
SET dirfrom=C:\from
SET dirto=C:\to
FOR /F %%I IN (%listfile%) DO (
    copy %dirfrom%\%%I %dirto%\%%I
)

解説

ファイル名が書かれたファイル名を変数に格納しています。

SET listfile=list.txt

コピー元のディレクトリを指定してます。

SET dirfrom=C:\from

コピー先のディレクトリを指定してます。

SET dirto=C:\to

list.txtの中身を展開してループを回しています。

%%Iの中にファイルから読み取った1行が格納されます。

FOR /F %%I IN (%listfile%) DO (
    copy %dirfrom%\%%I %dirto%\%%I
)