とある日、知人から「robocopy /move を実行してみたけど、なぜかフォルダが移動しない」とのヘルプ連絡を受けて解決したときのメモです。
実はこれ、robocopyに1つオプションを追加するだけで解決しましたので、同じ現象でお困りの方はぜひ参考にしてくださいね!
クリックできる目次
robocopy /move でフォルダが移動しない現象
現象は単純です。
例えば、以下の画像のように、「TEST_1フォルダ内のAフォルダとBフォルダ」を「TEST_2フォルダ」に移動してみます。
以下が移動先のTEST_2フォルダです。
知人が実行していたコードをみると、単純に/MOVEオプションを付けて実行していたので、真似て記述した以下のコードを実行してみました。
知人のコード:
すると、結果は以下の通り、robocopyの実行結果には、スキップ1と表示され、TEST_2フォルダ上に、AフォルダとBフォルダが移動しなかったのです。
robocopy /move でフォルダが移動しない原因
そこで、robocopyの詳細を調べてみたところ、サブディレクトリ(今回のサンプルではAフォルダとBフォルダ)を移動するためには、/S または /E のオプションも付ける必要があることが判明したのです。
つまり、今回robocopy /move でフォルダが移動しなかった原因は、このオプション( /S または /E )を付けていなかったため、ということになります。
robocopy /move で1つオプションを加えて解決
すでに説明した原因から解決策は、単純に /S または /E のオプションを追加するだけです。
知人の場合、移動したいサブディレクトリは、空のディレクトリ以外ということだったので、以下のように /S を付けました。
※もし空ディレクトリも移動したい場合は、/S ではなく、/E を付ける
これを実際に実行してみたところ、TEST_1はなくなり、TEST_2の下にTEST_1の下にあったフォルダ・ファイルが移動しました。
robocopy /move でフォルダが移動しないまとめ
robocopy /move でフォルダが移動しないときの原因と対処法を紹介しました。
今回のケースでは、単純に /S または /E のオプションを追加するだけで解決しましたので、同じ現象でお困りの方はぜひ参考にしてくださいね!
※もし空ディレクトリも移動したい場合は、/S ではなく、/E を付ける