2018年6月29日

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

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

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

実際にやってみる

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は難しい

CATEGORIES