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
)