ごった煮

色々な事を書いてます

ビルドイベントに仕込んだrobocopyのエラー解消について

ビルドイベントで、ビルドしたらファイルを別のフォルダにコピーするみたいなことがしたかったんですが、Visual StudioRobocopyがエラーになりましたみたいなことを言いだすので、

エラーが出ないようにしてみました。

自分への備忘録ということで

実際にやってみる

robocopy .\ .\package\lib\ ファイル名

みたいにするとファイルはコピーされます。

実際はエラーではないです。

ですが、Visual Studio的にはこれだけでは、エラーになります。

なぜかというと、robocopyの実行時の戻り値が、0ではないからです。

robocopyの戻り値は、ざっくり下のような感じ

  • 0 : コピーする必要がないので何もしない
  • 1 : ファイルのコピーに成功した
  • 2 : コピー元にファイルがなく、コピー先にはファイルがある
  • 4 : 同じ名前で別の種類のファイルがあった(コピー元がファイルでコピー先がフォルダなど)
  • 8 : コピーに失敗した

あとは、一度のrobocopyの処理で出たエラーコードを足し合わせたものが出力されます。

とりあえず、0以外が戻った際にエラー扱いにならないようにrobocopyの行の下に追加で戻り値の処理をする1行を追加します。


if %ERRORLEVEL% LSS 8 EXIT 0

こんな感じ

とりあえず戻り値が8以下の場合は、エラーにしないようにしました。

もうちょっと厳密にとった方がいい気もしますがとりあえず応急処置ということで

まとめ

robocopyは難しい