私はネットワーク共有から同じことをしようとしています。
SET MoveDirSource=\\Server\Folder
SET MoveDirDestination=Z:\Folder
Windows 7マシンでのテストの結果と解決策を次に示します。
提案:
ROBOCOPY "%MoveDirSource%" "%MoveDirDestination%" /MOVE /E
問題:ソースフォルダーを移動します。
提案:
ROBOCOPY "%MoveDirSource%" "%MoveDirDestination%" /MOVE /E /XD "%MoveDirSource%"
問題:ソースフォルダーは引き続き移動します。
提案:
ROBOCOPY "%MoveDirSource%" "%MoveDirDestination%" /MOV /E
問題:ソースフォルダーに空のフォルダー構造を残します。
実用的なソリューション:
MKDIR "%MoveDirDestination%"
FOR %%i IN ("%MoveDirSource%\*") DO MOVE /Y "%%i" "%MoveDirDestination%\%%~nxi"
FOR /D %%i IN ("%MoveDirSource%\*") DO ROBOCOPY /MOVE /E "%%i" "%MoveDirDestination%\%%~nxi"
最初の2行は最上位ファイルを移動し、3行目はフォルダーを移動します。ダブル%%はバッチファイルで使用するためのものであり、コマンドラインに貼り付けるには、これらを単一のパーセンテージマークに変更する必要があることに注意してください。
宛先の〜nxiはFOR SUBSITUTION VARIABLE(FOR /?を参照)です。ここで〜nxiは、現在ループされているアイテムの名前と拡張子を表します。
RobocopyのデフォルトはRETRY A MILLION回で、各試行の間に30秒待機するため、robocopy引数に/ R:1 / W:1を追加することをお勧めします。