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 scriptTentativa 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"