Пакетная команда Windows для перемещения всех папок в каталоге с исключениями - PullRequest
11 голосов
/ 18 сентября 2011

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

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

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

Ответы [ 6 ]

11 голосов
/ 18 сентября 2011

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

robocopy c:\source\ c:\source\target\ *.* /E /XD c:\source\target\ /move
7 голосов
/ 18 сентября 2011
FOR /d %%i IN (*) DO IF NOT "%%i"=="target" move "%%i" target
1 голос
/ 16 ноября 2015

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

1 голос
/ 23 августа 2012

При использовании 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 для каждого.

1 голос
/ 18 сентября 2011

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

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

0 голосов
/ 29 августа 2016

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

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