lisz-works

技術と興味の集合体

バッチ コピー先のファイル/フォルダがあったらコピー/なかったらコピー

【スポンサーリンク】

コマンドプロンプト

バッチファイルで、コピー先のファイル有無で、コピーをするかどうかを決める処理です。

コピー先にファイルがなかったらコピー

コピー先にファイルがない場合、コピーをする方法です。

if not exist C:\work\project\setting.json (
    echo copying setting.json
    copy C:\work\resource\setting.json C:\work\project\
)

コピー先にファイルがあったらコピー

コピー先にファイルがある場合、上書きコピーをする方法です。

あまり使うケースは少ないかもしれませんが……

if exist C:\work\project\setting.json (
    echo copying setting.json
    copy C:\work\resource\setting.json C:\work\project\
)

解説

if文はこのように書きます。

if 条件 ( TRUEのときの処理 ) else ( FALSEのときの処理 )

今回は、ifの条件に使える構文のうちの、2つを使っています。

構文 意味
exist ファイル/フォルダが存在するか?
not TRUE/FALSEを反転させる

なので

if exist ファイルまたはフォルダ ()

とすると、指定のものが存在するとき処理する。

if not exist ファイルまたはフォルダ ()

とすると、指定のものが存在するとき「じゃないとき」処理する。
つまり「存在しないとき」となります。

あとがき

バッチでコピー先のファイル/フォルダがあったらコピー/なかったらコピーについてでした。

ファイル/フォルダの存在確認は、いたるところで使えるので、ぜひ活用してみてください。

ただコピーの場合は、robocopy使っちゃったほうが早いし、短くて済むかもしれません。