Questão Uma linha de comando ou cmd de lote para concatenar vários arquivos


Eu tenho 50 arquivos de texto em um diretório.

Existe um método de linha de comando do Windows para concatenar esses arquivos em um único arquivo?

estou usando Windows Vista.

Eu não quero digitar o nome de todos os arquivos.


90


origem


qual versão do DOS você está usando? :) Vamos, nos dê mais algumas informações, que tipos de arquivos ... você está obviamente procurando uma maneira de mesclar esses arquivos.
A postagem é editada - Mirage
DOS em sistemas operacionais baseados no Windows NT (NT, 2000 e tudo desde o XP) realmente não é DOS, é um shell de comando chamado "cmd.exe". removido tags DOS para refletir isso. - quack quixote
desculpe por isso, eu realmente não sabia disso. Eu estava pensando como DOS - Mirage
Felizmente, os últimos vestígios do DOS morreram com o Windows ME. :) mas não se preocupe - a maioria das pessoas ainda chama a linha de comando do Windows "DOS", por isso não é errado, somente impreciso. já que o DOS real ainda é usado algumas vezes, eu estou limpando a tag DOS para ser apenas uma verdadeira pergunta do DOS. - quack quixote


Respostas:


Eu não quero digitar o nome de todos   arquivos.

Isso é fácil de ser evitado. Abra um prompt de comando nesta pasta e digite o seguinte comando:

copy /b *.txt newfile.txt

pressione Entrar.

Agora você terá todos os arquivos de texto nesta pasta ordenados por data que estão sendo mesclados em um único arquivo chamado newfile.txt.

Meu objetivo final é armazenar o   conteúdo de cada arquivo de texto em um   coluna de uma planilha do Excel.

Aqui está um tutorial que pode ajudá-lo a alcançar seu "objetivo final":

Mesclar todos os arquivos CSV ou TXT em uma pasta em uma planilha


117



É possível inserir um novo caractere de linha após cada arquivo - Mirage
não com este método. - quack quixote
Quais são as outras opções. Meu objetivo final é armazenar o conteúdo de cada arquivo de texto em uma coluna separada da planilha do Excel. Alguma ideia - Mirage
@Mirage - atualizou minha resposta de acordo com seu comentário.
Mas o problema é como posso adicionar o caractere de linha final a cada arquivo de texto. Atualmente, alguns dos arquivos de texto estão no mesmo paragrah no arquivo mesclado, portanto, coloque o Excel em uma coluna. OU se eu puder acrescentar um caractere de endline a todos os arquivos primeiro e depois executar a operação de mesclagem - Mirage


Para adicionar uma novaLinha no final de cada arquivo concatenado, use type ao invés de copy, do seguinte modo:

type *.txt > newfile.txt

35



AVISO: Quando você usa digite * .txt> newfile.txt, o texto é duplicado. - Malganis
Remover .txt a partir de newfile e bam! Lá você tem isso. - fa wildchild
Essa é uma resposta incrível para concatenar arquivos de log ou outras coisas que você analisará no futuro. Especificamente o fato que você pode fazer type x.log.* > merged.log sem um arquivo em lotes. Novas linhas são fáceis de lidar. - Daniel Chapman
Uau, type percorreu um longo caminho desde o DOS 3.3. Eu não sabia que você pode usar máscaras de arquivo. Quando isso aconteceu? - Sun


Supondo que você esteja falando sobre acrescentar arquivos de texto, o copy comando pode ser usado para anexá-los juntos:

copy file1+file2+file3 targetfile

Se você tiver muitos arquivos, poderá executar um loop anexando um arquivo de cada vez.

Para arquivos binários, adicione o '/b'opção:

copy /b file1+file2+file3 targetfile

Isso pressupõe que você saiba que os arquivos binários com os quais você está trabalhando podem ser anexados em seqüência; se não, você receberá um monte de dados inúteis.


30



Isso é bastante útil se você precisar concatenar arquivos em uma ordem específica. - kapex


Execute o seguinte comando no prompt de comando:

for %f in (*.txt) do type "%f" >> output.txt

8



Isso não funciona como esperado, todo o texto é duplicado em output.txt - DavidPostill♦
Dica * .txt corresponde ao output.txt - DavidPostill♦
@DavidPostill, editei a resposta de acordo com sua preocupação. - Saran


O seguinte arquivo .bat anexará todos os arquivos * .for, exceto o chamado XIT.for, em um arquivo vazio denominado MASTER.for

type NUL > MASTER.for
FOR %%G IN (*.for) DO IF NOT "%%G" == "XIT.for" copy /A MASTER.for+"%%G" && echo. >> MASTER.for

:)


3



Uma leve reviravolta no acima: se alguém quiser ter certeza de que os arquivos são concatenados alfabeticamente, deve-se usar: FOR / F %% G IN ('dir / b / o * .for') SE NÃO "%% G" == "XIT.for" copiar / A MASTER.for + "%% G" && echo. >> MASTER.for - Guido Domenici
Eu gosto disso. Outro ajuste que eu precisava hoje é que um cabeçalho de nome de arquivo seja impresso no arquivo para separar os arquivos de entrada. for %f in (*.txt) do ((echo. & echo == %f == & echo. & type %f ) >> *.txt.dat ) - Curtis Price
Estou ciente de que usar um shell bash provavelmente faria mais sentido! - Curtis Price