Como copiar todas as pastas em um determinado nível, mas sem arquivos ou subpastas?

3

Eu gostaria de saber como copiar todas as pastas para um novo local, mas quero apenas incluir as próprias pastas - nada que esteja dentro delas (portanto, nenhuma subpasta e nenhum arquivo). Isso é possível?

Além disso, relacionado a isso, existe também uma maneira de copiar todas as pastas e subpastas dentro dessa pasta, mas apenas 1 nível de profundidade (portanto, somente pastas filho diretas, não crianças dentro das crianças) e ainda sem arquivos copiados.

Estou aberto para fazer isso de qualquer forma - linha de comando ou por meio de um utilitário.

    
por Sheree 02.11.2015 / 18:04

2 respostas

2

Use o utilitário da Microsoft robocopy .

robocopy SOURCE_FOLDER DEST_FOLDER /E /LEV:1 /XF * 

Opções:

  • /E Copiar subpastas, incluindo subpastas vazias
  • /LEV:1 Copia somente os principais N LEVels da árvore de fontes.
  • /XF * eXclude Arquivos correspondentes a nomes / caminhos / curingas fornecidos.

Fonte: link

    
por 02.11.2015 / 18:20
0

Usando uma linha de comando, se você quiser copiar apenas pastas vazias, isto é, criar pastas em um novo local, por exemplo, em algum lugar em c: ...:

set newlocation=c:\...
@for /f "tokens=3,4" %i in ('dir') do @if "%i" equ "<DIR>" if "%j" neq "." if "%j" neq ".." mkdir %newlocation%\%j

Se você quiser ir um nível de profundidade, é para repetir o loop for mais uma vez:

@for /f "tokens=3,4" %i in ('dir') do @if "%i" equ "<DIR>" if "%j" neq "." if "%j" neq ".." mkdir %newlocation%\%j && for /f "tokens=3,4" %u in ('dir %j') do @if "%u" equ "<DIR>" if "%v" neq "." if "%v" neq ".." mkdir %newlocation%\%j\%v

Observe que, se você quiser colocar isso em um arquivo de lote, substitua todos os % por %% .

    
por 02.11.2015 / 18:59