У меня есть каталог, который содержит файлы и несколько уровней подкаталогов:
C:\Source
Я хотел бы переместить содержимое C:\Source в:
C:\Destination
Требования:
- Все файлы и все подкаталоги внутри C:\SourceData необходимо переместить
- Я буду запускать команду в пакетный файл
- Я не могу использовать Powershell или любые другие языки сценариев
Попытка 0
XCOPY /E "C:\Source" "C:\Destination"
Это работает отлично, но копирует вместо ходов. Я не могу копировать, а затем удалять исходный код, поскольку я перемещаю очень большой набор файлов, и на диске не хватает места для двух копий.
Попытка 1
MOVE "C:\Source" "C:\Destination"
Это перемещает весь каталог C:\Source в C:\Destination, поэтому я получаю:
C:\Destination\Source
Попытка 2
С некоторой помощью этот вопрос и принятый ответ я придумал:
for /r "C:\Source" %%x in (*) do move "%%x" "C:\Destination"
Это перемещает файлы внутри C:\Source, но не подкаталоги или их содержимое. Обратите внимание, что я использовал %% x вместо% x, поскольку я использую его в пакетном файле.
Использование FOR кажется многообещающим, но я не уверен, что использовал правильный синтаксис? Я что-то пропустил?
Попытка 3
Как предложил Nick D, я попробовал переименовать:
RENAME "C:\Source" Назначение
Для примера сценария я дал это прекрасно. К сожалению, мой реальный каталог Destination находится на другом уровне в исходной папке, и это, похоже, не поддерживается:
C:\>REN /?
Renames a file or files.
RENAME [drive:][path]filename1 filename2.
REN [drive:][path]filename1 filename2.
Note that you cannot specify a new drive or path for your destination file.
Я получаю "Синтаксис команды неверен". ошибки, если я попытаюсь указать более сложный путь назначения, например:
RENAME "C:\Source" "C:\MyOtherDirectory\Destination"
RENAME "C:\Source" "MyOtherDirectory\Destination"