У меня есть каталог, который содержит файлы и несколько уровней подкаталогов:
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
Как подсказал Ник D, я попытался переименовать:
ПЕРЕИМЕНОВАТЬ "C: \ Source" Пункт назначения
Для примера сценария, который я дал, это работает нормально. К сожалению, мой настоящий каталог Destination находится на другом уровне, чем каталог Source , и это не поддерживается:
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"