バッチファイルで、コピー先のファイル有無で、コピーをするかどうかを決める処理です。
コピー先にファイルがなかったらコピー
コピー先にファイルがない場合、コピーをする方法です。
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使っちゃったほうが早いし、短くて済むかもしれません。