Copie pastas específicas no Windows (robocopy)

1

Eu quero fazer alguma coisa simples (eu pensei ...)

Eu tenho algo assim:

Folder01 
  |_File1
  |_File2
  |_File3
Folder02
  |_File1
  |_File2
  |_File3
Folder03
  |_File1
  |_File2
  |_File3
Folder04
  |_File1
  |_File2
  |_File3

Eu só quero copiar esses dados com robocopy para um destino (porque eu preciso de um arquivo de log e tem que especificar com atributos para copiar).

Mas, devido a algumas limitações, não consigo copiar os dados em uma execução e tenho que dividir este trabalho (em reais, cerca de 5000 pastas, 3 TB).

Portanto, quero especificar a "pasta inicial" e a última pasta como Folder00X (Folder001, +1, Folder100; o trabalho deve começar com Folder001 e, com as etapas +1, deve copiar o Folder002, Pasta003 .... Folder100 ).

    
por ManniTC 20.01.2016 / 12:27

1 resposta

0

O trabalho deve começar com Folder001, passo +1, copiar Folder002, ... Folder100

Você pode usar um loop for /l em um arquivo em lotes para fazer isso.

O arquivo em lote a seguir exibe a lista de nomes de pastas necessária:

@echo off
setlocal enabledelayedexpansion
for /l %%i in (1,1,100) do (
   rem prefix the count with leading zeros
   set "_number=00%%i"
   rem extract the last 3 digits
   echo Folder!_number:~-3!
   )
endlocal

Notas:

  • O arquivo de lote deve estar localizado no diretório um nível acima de Folder001
  • Substitua o comando echo por um comando robocopy que faz a cópia para você.
  • Para processar nomes com 4 dígitos (por exemplo, Folder1000, ... Pasta 2000), é necessário alterar o arquivo em lotes.
    • Substitua (1,1,100) por (1000,1,2000)
    • Substitua "_number=00%%i" por "_number=000%%i"
    • Substitua Folder!_number:~-3! por Folder!_number:~-4!

Sintaxe

FOR /L %%parameter IN (start,step,end) DO command 

Key

  • start : The first number
  • step : The amount by which to increment the sequence
  • end : The last number

Fonte - para / l

Leitura Adicional

  • Um índice A-Z da linha de comando do Windows CMD - Uma excelente referência para todas as coisas relacionadas à linha do Windows cmd.
  • enabledelayedexpansion - Expansão com atraso fará com que as variáveis sejam expandidas em tempo de execução e não no tempo de análise.
  • para / l - Realize condicionalmente um comando para um intervalo de números.
  • definir - Exibir, definir ou remover variáveis de ambiente do CMD. As alterações feitas com o SET permanecerão apenas pela duração da sessão atual do CMD.
  • variáveis - Extrai parte de uma variável (substring).
por 20.01.2016 / 13:34