Подтвердить что ты не робот

Командная команда Windows для перемещения всех папок в каталог с исключениями

Я пытаюсь написать пакетный файл Windows, который позволит мне переместить все каталоги в пределах данного исходного каталога в целевой каталог, который существует в этом исходном каталоге.

Очевидно, что моя команда перемещения должна применяться только к каталогам, а также исключать обработку целевого каталога.

Возможно ли это с помощью пакетной команды Windows?

4b9b3361

Ответ 1

Robocopy (присутствует в последних версиях Windows или можно загрузить из WRK), просто используйте переключатель /xd, чтобы исключить целевой каталог из копии;

robocopy c:\source\ c:\source\target\ *.* /E /XD c:\source\target\ /move

Ответ 2

FOR /d %%i IN (*) DO IF NOT "%%i"=="target" move "%%i" target

Ответ 3

Это не сработает - вы получите сообщение об ошибке, указывающее, что целевой каталог находится внутри исходного каталога или даже если вы явно исключаете целевой каталог. Что вы можете сделать, так это переместить каталоги во временное местоположение, которое не находится под источником, а затем переместить их в цель.

BTW, используя команду move, вы не укажете, какие папки следует исключить. Для этого вы можете использовать xcopy, но обратите внимание, что он скопирует папки, а не перемещает их. Если это имеет значение, вы можете удалить все, что захотите, просто убедитесь, что вы не удаляете целевой каталог, который находится в исходном каталоге...

Ответ 4

Используя robocopy, включенную в Windows 7, я обнаружил, что параметр /XD не мешает перемещать исходную папку.

Решение:

SET MoveDirSource=\\Server\Folder
SET MoveDirDestination=Z:\Folder
FOR /D %%i IN ("%MoveDirSource%\*") DO ROBOCOPY /MOVE /E "%%i" "%MoveDirDestination%\%%~nxi"

Это происходит через папки верхнего уровня и запускает robocopy для каждого.

Ответ 5

Примечание: Robocopy, упомянутый выше, используя флаг /move, скопирует файлы, а затем удалит их из исходной папки, а не перемещает файлы. Это может иметь решающее значение при перемещении большого количества файлов из одного места в другое на одном и том же диске (поскольку перемещение происходит практически мгновенно, а копирование - намного медленнее)

Ответ 6

Это работает для меня:

move c:\fromDir\*.* c:\toDir\