Como posso mover o conteúdo de uma árvore de diretórios para outra?

Eu tenho um diretório que contém arquivos e um número de níveis de subdiretórios:

C:\Source

Eu gostaria de mover o conteúdo de C: \ Source para:

C:\Destination

Requisitos:

Todos os arquivos e todos os subdiretóriosdentro C: \ SourceData deve ser movidoEu vou estar executando o comando em um arquivo de loteEu não posso usar o Powershell ou qualquer outra linguagem de script

Tentativa 0

XCOPY /E "C:\Source" "C:\Destination"

Isso funciona perfeitamente, mas copia em vez de movimentos. Não consigo copiar, em seguida, excluo a fonte, pois estou movendo um conjunto muito grande de arquivos e não há espaço em disco suficiente para ter duas cópias deles por vez.

Tentativa 1

MOVE "C:\Source" "C:\Destination"

Isso move todo o diretório C: \ Sourcepara dentro C: \ Destino, então acabo com:

C:\Destination\Source

Tentativa 2

Com alguma ajuda deesta pergunta e resposta aceita Eu vim com:

for /r "C:\Source" %%x in (*) do move "%%x" "C:\Destination"

Isso move os arquivos dentro de C: \ Source, mas não os subdiretórios ou seus conteúdos. Observe que usei %% x em vez de% x, pois estou usando em um arquivo em lotes.

Usar o FOR parece promissor, mas não tenho certeza se usei a sintaxe correta? Eu perdi alguma coisa?

Tentativa 3

Como sugerido por Nick D, tentei renomear:

RENOMEAR "C: \ Source" Destino

Para o cenário de exemplo, eu dei isso funciona bem. Infelizmente meu verdadeiroDestino diretório está em um nível diferente doFonte diretório e isso não parece ser suportado:

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.

Eu recebo "A sintaxe do comando está incorreta." erros se eu tentar especificar um caminho de destino mais complexo, por exemplo:

RENAME "C:\Source" "C:\MyOtherDirectory\Destination"
RENAME "C:\Source" "MyOtherDirectory\Destination"

questionAnswers(13)

yourAnswerToTheQuestion