Existe uma maneira de acrescentar arquivos eficientemente usando o comando copy do DOS?

5

Usando a sintaxe do comando copy do DOS para concatenar arquivos:

copy file1.txt+file2.txt all.txt

Eu sei que posso fazer isso ...

copy file1.txt+file2.txt file1.txt

Isso é eficiente? Está fazendo o que estou esperando? Ele funciona, mas eu quero saber se ele realmente está anexando a file1.txt ou se está copiando file1.txt (ruim), concatenando file2 e então renomeando para file1.txt (que não é eficiente)?

    
por clsturgeon 30.11.2009 / 18:06

3 respostas

9

copy está copiando file1.txt e file2.txt na memória, concatenando-os e escrevendo para file1.txt . Ele não está copiando para um novo arquivo e renomeando esse arquivo, então realmente não há muita E / S de disco extra.

Você também pode usar type .

type file2.txt >> file1.txt

O operador >> acrescenta texto. Mas isso, obviamente, não funcionará para arquivos binários.

    
por 30.11.2009 / 18:47
2

Is this efficient?

Claro. No entanto, usando a opção /b pode / pode aumentar o desempenho simplesmente concatenando os bytes em vez de processar os arquivos como texto. Isso é particularmente perceptível ao concatenar arquivos de texto muito grandes.

Is it doing what I'm expecting?

Geralmente sim, mas se o arquivo foi feito em Linux, Mac ou outro sistema com terminadores de arquivo / linha diferentes, isso pode dar resultados inesperados. É uma boa ideia usar a opção /b em geral, mesmo para arquivos de texto.

I want to know is it actually appending to file1.txt or is it copying file1.txt (bad), concatenating file2 and then renaming to file1.txt (which is not efficient)?

Sim, está criando um novo arquivo temporário, excluindo o original e renomeando o arquivo temporário para o nome original, mas a exclusão e a renomeação não demoram e, a menos que o arquivo original seja grande, você normalmente não notará a cópia (redundante) do arquivo original.

    
por 02.09.2012 / 01:52
0

Se eles forem da mesma extensão, você poderá fazer isso -

digite *.txt >> fileout.tmp .

Em seguida, renomeie fileout.tmp para a extensão correta.

    
por 10.09.2014 / 13:17