読者です 読者をやめる 読者になる 読者になる

ちぎっては投げるブログ

Programming, Android, RaspberryPi, Digital Devices, Kinkuma Hamster...

robocopyで無限ループしてしまう

Programming shell

ちょっと面白かったので載せておきます。

最近のWindowsには、robocopyというコマンドがあります。

-------------------------------------------------------------------------------
   ROBOCOPY     ::     Windows の堅牢性の高いファイル コピー

-------------------------------------------------------------------------------

  開始: Wed Mar 25 22:34:38 2015

       簡易な使用法 :: ROBOCOPY コピー元 コピー先 /MIR

           コピー元 :: コピー元ディレクトリ (ドライブ:\パスまたは \\サーバー
                       \共有\パス)。
           コピー先 :: コピー先ディレクトリ (ドライブ:\パスまたは \\サーバー
                       \\共有\パス)。
               /MIR :: 完全なディレクトリ ツリーをミラー化します。

    詳細な使用方法については、ROBOCOPY /? を実行してください。


****  /MIR はファイルをコピーできるだけでなく、削除もできます。

ようするに、Windows標準で差分バックアップなどが実現できます。 これを使って、特定フォルダをバックアップするバッチファイルを作ったところ、なぜか無限ループしました。 書いたバッチファイルは、だいたいこんな感じのもの。

echo "hogefugaにバックアップします."
robocopy c:\hoge c:\fuga /MIR

なぜなのか。それは、バッチファイル名をrobocopy.batにしてしまったからです。 つまり、robocopy c:\hoge c:\fuga /MIRでは、Windowsrobocopyコマンドではなく、自分自身であるrobocopy.batを呼び出してしまいました。 よって、無限ループしてしまった。うっかりですが、ちょっと面白いです。