Eu tenho uma lista de locais de pastas das quais gostaria de copiar todos os arquivos contidos nesses locais. A lista de locais de pastas é armazenada em uma linha separada em um arquivo de texto (.txt). Todos os arquivos devem ser copiados para o mesmo local.
Como posso concluir este exercício usando esta lista de pastas em combinação com uma função de cópia no prompt de comando?
Responder1
Considerando um arquivo com conteúdo semelhante contendo uma lista de diretórios como:
c:
c:\users
c:\anyotherfolder
xcopy
dentro de um for
loop fará o trabalho :)
for /f %a in (list.txt) do xcopy /e %a\* c:\destination_folder\
(copiando toda a árvore de diretórios (devido a /e
) )
Você deve adicionar um extra %
ao nome da variável se quiser mantê-la e executá-la em um .bat
arquivo separado.
Responder2
Peguei o código de Elvins e o desenvolvi ligeiramente para resolver o problema de inclusão de espaços em caminhos e nomes de pastas.
O comando For Do agora usa um arquivo CSV para obter os caminhos das pastas; foi então necessário incluir a "delims=,"
opção no comando For.
for /f "delims=," %a in (D:\Batch_Files\Test_Bench\Folders_List.csv) do copy "%a\*" D:\Batch_Files\Test_Bench\Paste_All_The_Files_Here
Os registros delimitados por vírgula permitiram For /f
acessar os locais que contêm espaços, mas apenas se o token %a\*
estiver agrupado entre " ".