Hatena::ブログ(Diary)

履歴 このページをアンテナに追加 RSSフィード Twitter

〜雑食系SEの作業履歴〜

2011-01-27

Robocopyの戻り値を知りたい

ファイルのコピーやフォルダの同期などのバッチファイルを以前まではXcopyコマンドを利用して作成していたのですが、

どうやらWindows2008ではXcopyではなく、Robocopyの使用を推奨しているようです。


Windows2003でのXcopy /?の実行結果

f:id:sikakura:20110127131702j:image


Windows2008でのXcopy /?の実行結果

f:id:sikakura:20110127131712j:image


そこでRobocopyを使用してバッチファイルを作成し始めたのですが、Robocopyの終了コードが良く分かりませんでした。

JP1などのジョブ管理ツールなどから実行すると、デフォルトの設定ではリターンコードが0以外が返ってくるとエラーとなります。

Robocopyで作成したバッチファイルが成功したり、失敗したりが続いたので調べることに。

Webで調べるとリソースキッドの中にドキュメントがあるとのことなので、以下のURLからリソースキッドをダウンロードしました。

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=9d467a69-57ff-4ae7-96ee-b18c4790cffd&DisplayLang=en

リソースキッドをインストールすると、インストールフォルダにrobocopy.docというMS WORDのファイルがあります。

その中にReturn Codeに関する表がありました。


Hex Bit ValueDecimal ValueMeaning If Set
0x1016Serious error. Robocopy did not copy any files. This is either a usage error or an error due to insufficient access privileges on the source or destination directories.
0x088Some files or directories could not be copied (copy errors occurred and the retry limit was exceeded). Check these errors further.
0x044Some Mismatched files or directories were detected. Examine the output log. Housekeeping is probably necessary.
0x022Some Extra files or directories were detected. Examine the output log. Some housekeeping may be needed.
0x011One or more files were copied successfully (that is, new files have arrived).
0x000No errors occurred, and no copying was done. The source and destination directory trees are completely synchronized.

上の表によると、コピーが正常に終了した場合は1が返ってくるようですね。。。

もう少し細かい判定をしたければ…ということで、以下のような判定用のバッチも記載されていましたので、貼っておきます。

if errorlevel 16  echo  ***FATAL ERROR***  & goto end
if errorlevel 15  echo FAIL MISM XTRA COPY & goto end
if errorlevel 14  echo FAIL MISM XTRA      & goto end
if errorlevel 13  echo FAIL MISM      COPY & goto end
if errorlevel 12  echo FAIL MISM           & goto end
if errorlevel 11  echo FAIL      XTRA COPY & goto end
if errorlevel 10  echo FAIL      XTRA      & goto end
if errorlevel  9  echo FAIL           COPY & goto end
if errorlevel  8  echo FAIL                & goto end
if errorlevel  7  echo      MISM XTRA COPY & goto end
if errorlevel  6  echo      MISM XTRA      & goto end
if errorlevel  5  echo      MISM      COPY & goto end
if errorlevel  4  echo      MISM           & goto end
if errorlevel  3  echo           XTRA COPY & goto end
if errorlevel  2  echo           XTRA      & goto end
if errorlevel  1  echo                COPY & goto end
if errorlevel  0  echo    --no change--    & goto end
:end

なるほど。。。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/sikakura/20110127/1296102650