Copia uma lista de arquivos para outra

2

Eu tenho uma lista de arquivos extraídos de uma tabela em um banco de dados SQL. O arquivo pode ser um arquivo de texto delimitado ou uma planilha do Excel, o que funcionar melhor.

O arquivo se parece com isso

sourcePath1\fileName1, destPath1\fileName1
sourcePath2\fileName2, destPath2\fileName2
sourcePath3\fileName3, destPath3\fileName3

etc

Uma coluna contém o caminho original e o nome do arquivo dos arquivos, a segunda coluna contém o caminho e o nome de arquivo desejados dos arquivos. Isso foi obtido usando uma função REPLACE () padrão na instrução SELECT original.

Agora eu tenho a lista (s) que eu realmente preciso copiar o arquivo de origem para o destino.

Isso é possível usando a linha de comando (lote ou Powershell?) ou via script ou uma GUI?

    
por Danny 24.02.2013 / 23:29

3 respostas

1

Baseado na resposta de David Ruhmann, os seguintes trabalhos. Ele usa xcopy e passa um F para o prompt que pergunta se o arquivo é um arquivo ou uma pasta.

@echo off
for /f "tokens=1,2 delims=," %%A in (book1.csv) do (
    cmd /c echo F | xcopy "%%~A" "%%~B"
)

EDIT: Adicionado til (~) conforme sugestão @DavidRuhmann.

    
por 26.02.2013 / 12:05
2

Aqui está uma solução em lote nativa do Windows para analisar um arquivo de texto com valores separados por vírgula (csv).

@echo off
for /f "tokens=1,2 delims=," %%A in (file.csv) do (
    copy %%A %%B
)
    
por 25.02.2013 / 19:57
0

Isso é bastante fácil de fazer com um shell Unix. Veja como você pode fazer isso com meu shell Hamilton C . (A versão gratuita fará isso.) Você poderia fazer algo muito semelhante com Cygwin bash .

A maneira mais fácil de fazer isso seria transformar a lista usando sed em um script onde cada linha uma operação cp . Em seguida, basta executar o script.

sed "s/^^/cp '/;s/, /' '/;s/^$/'/" < list.csv > copyscript.csh
copyscript

Veja como seria o arquivo copyscript.csh :

    
por 25.02.2013 / 00:11

Tags