Я пытался сделать то же самое из общего сетевого ресурса.
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"
Первые две строки перемещают файлы верхнего уровня, третья - папки. Обратите внимание, что двойной %% предназначен для использования в командном файле, для вставки в командную строку необходимо, чтобы они были изменены на одну процентную отметку.
~ nxi в пункте назначения - это переменная FOR SUBSTITUTION (см. FOR /?), где ~ nxi представляет имя и расширение элемента, в данный момент проходящего через петлю.
В Robocopy по умолчанию задано значение ПОПЫТРИТЬ МИЛЛИОНЫ и ОЖИДАТЬ 30 СЕКУНД между каждой попыткой, поэтому вы можете добавить / R: 1 / W: 1 к аргументам robocopy.