unir txt para lineas leer batch bat archivos archivo windows command-line concatenation

txt - Concatenar archivos de texto con la línea de comando de Windows, eliminando las líneas principales



batch leer lineas de un archivo (8)

Necesito concatenar algunos archivos de texto relativamente grandes, y preferiría hacer esto a través de la línea de comando. Lamentablemente, solo tengo Windows y no puedo instalar un nuevo software.

type file1.txt file2.txt > out.txt

me permite casi obtener lo que quiero, pero no quiero que la primera línea de archivo2.txt se incluya en out.txt.

Me he dado cuenta de que more tiene la opción +n para especificar una línea de inicio, pero no he logrado combinarlos para obtener el resultado que quiero. Soy consciente de que esto puede no ser posible en Windows, y siempre puedo editar out.txt a mano para deshacerme de la línea, pero ¿hay una manera simple de hacerlo desde la línea de comandos?


He aquí cómo hacer esto:

(type file1.txt && more +1 file2.txt) > out.txt


No tengo suficientes puntos de reputación para comentar sobre la recomendación de usar *.csv >> ConcatenatedFile.csv , pero puedo agregar una advertencia:

Si crea el archivo ConcatenatedFile.csv en el mismo directorio que está utilizando para la concatenación, se agregará a sí mismo.


Pondría esto en un comentario para ghostdog74, excepto que mi representante es muy bajo, así que aquí va.

more +2 file2.txt > temp
Este código ignorará las filas 1 y 2 del archivo. OP desea mantener todas las filas del primer archivo (para mantener la fila del encabezado) y luego excluir la primera fila (presumiblemente la misma fila del encabezado) en el segundo archivo, por lo que para excluir solo la fila del encabezado OP debería usar more +1 .

type temp file1.txt > out.txt

No está claro qué orden resulta de este código. Se adjunta temp a file1.txt (como se desee), o se agrega file1.txt a temp (no deseado ya que la fila del encabezado estaría enterrada en el medio del archivo resultante).

Además, estas operaciones tardan mucho tiempo con archivos grandes (por ejemplo, 300 MB)


Sé que dijiste que no podías instalar ningún software, pero no estoy seguro de cuán ajustada es esa restricción. De todos modos, tuve el mismo problema (tratando de concatenar dos archivos con presumiblemente los mismos encabezados) y pensé que podría proporcionar una respuesta alternativa para los demás que llegan a esta página, ya que funcionó muy bien para mí.

Después de probar un montón de comandos en Windows y de estar severamente frustrado, y también de probar todo tipo de editores gráficos que prometían poder abrir archivos grandes, pero luego no pude, finalmente volví a mis raíces de Linux y abrí mi Cygwin. rápido. Dos comandos:

cp file1.csv out.csv tail -n+2 file2.csv >> out.csv

Para file1.csv 800MB y file2.csv 400MB, esos dos comandos tomaron menos de 5 segundos en mi máquina. En un aviso de Cygwin, nada menos. Pensé que se suponía que los comandos de Linux eran lentos en Cygwin, pero ese enfoque requería mucho menos esfuerzo y era mucho más fácil que cualquier otro enfoque de Windows que pudiera encontrar.


Utilice el comando FOR para hacer eco de un archivo línea por línea, y con la opción ''omitir'' para omitir una serie de líneas de partida ...

FOR /F "skip=1" %i in (file2.txt) do @echo %i

Podría redirigir el resultado de un archivo por lotes que contenga algo así como ...

FOR /F %%i in (file1.txt) do @echo %%i FOR /F "skip=1" %%i in (file2.txt) do @echo %%i

Tenga en cuenta el doble% cuando una variable FOR se utiliza dentro de un archivo por lotes.


Yo uso esto y funciona bien para mí:

TYPE //Server/Share/Folder/*.csv >> C:/Folder/ConcatenatedFile.csv

Por supuesto, antes de cada ejecución, debe DELETE C:/Folder/ConcatenatedFile.csv

El único problema es que si todos los archivos tienen encabezados, se repetirá en todos los archivos.


more +2 file1.txt > type > out.txt && type file2.txt > out.txt


more +2 file2.txt > temp type temp file1.txt > out.txt

o puedes usar copy . Ver copy /? para más.

copy /b temp+file1.txt out.txt