Retirando um nível de uma árvore de diretórios

0

Estou tentando há algum tempo encontrar uma maneira eficiente de compactar as grandes árvores de diretórios de mais de 10 discos rígidos externos. Vou descrever o problema com algum detalhe para evitar mal-entendidos (esperançosamente) e economizar seu tempo. Por favor, tenha paciência comigo, estou em um nível bem básico com meus comandos do DOS.

A estrutura atual é:

X: \ [diretório principal] \ [diretórios diferentes nível 2] \ [diretórios diferentes nível 3] \ [muitos arquivos e subdiretórios]

A estrutura desejada é:

X: \ [diretório principal] \ [diretórios diferentes nível 2] \ [arquivos e subdiretórios]

Por isso, quero eliminar o nível 3 em negrito . Tenho estudado e experimentado todas as várias soluções sugeridas para problemas semelhantes que encontrei na Web, desde comandos simples a arquivos em lote e scripts VBS, mas sem sucesso.
O fato de os diretórios de nível 3 (assim como os diretórios de nível 2) terem nomes diferentes parece tornar as coisas muito mais complicadas, mas eu encontrei uma maneira manual relativamente fácil (Explorer) de renomear todos os diretórios de nível 2 para mesmo nome. Então eu posso converter a estrutura em:

X: \ [diretório principal] \ [diretórios diferentes nível 2] \ [XXX] \ [muitos arquivos e diretórios]

Com esse contexto (esperançosamente útil), até onde estou preso. Depois de muita experimentação, obtive o seguinte comando quase para funcionar corretamente no prompt de comando:

para / R% i em ("XXX \ . ") do xcopy "% i" "% ~ pi .." / S / E
[espaços ao redor da barra adicionados]

Uma disfunção remanescente é que ele copia subdiretórios no nível mais baixo em um nível, mas por algum motivo estranho não os arquivos contidos nesses subdiretórios. Existe um parâmetro que resolve isso?
Um problema muito maior, no entanto, é que eu tenho que mover os arquivos de origem, porque os discos rígidos estão quase cheios e incapazes de manter uma cópia de todos os arquivos ...

Com base nas sugestões que li no fórum, consultei ROBOCOPY . A sintaxe aonde eu cheguei é:

para / R% i em ("XXX \ . ") fazer robocopy / MOVE / S / E "% i" "% ~ pi .." < br> [espaços ao redor da barra adicionados]

Infelizmente isso não funciona no prompt de comando (nem no Power Shell nem como um arquivo de lote, btw, dando diferentes erros em cada caso). Ele retorna o erro

"ERRO 123 (0x0000007B) Acessando Diretório de Origem X: \ diretório principal \ diretório diferente nível 2 \ XXX \ nome_de_arquivo.ext \
O nome do arquivo, o nome do diretório ou a sintaxe do rótulo do volume estão incorretos. "

Aparentemente, o ROBOCOPY requer referências de diretório / arquivo diferentes do XCOPY. Eu tenho experimentado com barras, aspas e asteriscos, mas estou preso ... Alguém tem uma solução? Muito obrigado!

    
por Jake 18.01.2018 / 11:55

0 respostas