¿Hay un reemplazo para cat en Windows?

Necesito unir dos archivos binarios con un script *.bat en Windows.

¿Cómo puedo lograr eso?

El comando de type Windows funciona de manera similar a UNIX cat .

Ejemplo 1:

 type file1 file2 > file3 

es equivalente a:

 cat file1 file2 > file3 

Ejemplo 2:

 type *.vcf > all_in_one.vcf 

Este comando fusionará todas las vcards en una sola.

Puede usar copy /b como este:

 copy /b file1+file2 destfile 

Si tiene control sobre la máquina donde está haciendo su trabajo, le recomiendo que instale GnuWin32 . Simplemente descargue todo y deje que el progtwig wget recupere todos los paquetes. A continuación, tendrá acceso a cat, grep, find, gzip, tar, less y cientos de otros.

GnuWin32 es una de las primeras cosas que instalo en una nueva caja de Windows.

Conector Shameless PowerShell (porque creo que la curva de aprendizaje es un problema, por lo que enseñar algo en cualquier oportunidad puede ayudar)

 Get-Content file1,file2 

Tenga en cuenta que type es un alias para Get-Content, por lo que si le gusta más, puede escribir:

 type file1,file2 

Simplemente use el comando dos copy con múltiples archivos fuente y un archivo de destino.

copiar el archivo adjunto file1 + file2

Es posible que necesite la opción / B para archivos binarios

En la versión Redstone 1 de Windows 10, Windows agregó un subsistema Linux real para el núcleo NTOS. Creo que originalmente estaba destinado a admitir aplicaciones de Android, y tal vez escenarios tipo docker. Microsoft se asoció con Canonical y agregó un shell de bash nativo real. Además, puede usar apt manager para obtener muchos paquetes de Ubuntu. Por ejemplo, puede hacer que apt-get gcc instale la cadena de herramientas GCC como lo haría en una caja Linux.

Si tal cosa existió mientras estaba en la universidad, creo que podría haber hecho la mayoría de mis asignaciones de progtwigción de Unix en el bash shell nativo de Windows.

Si simplemente desea agregar texto al final del archivo existente, puede usar >> pipe. ex:

 echo new text >>existingFile.txt 

Si tiene que usar un script por lotes y tener Python instalado aquí, hay una respuesta de polgotom en lote y python:

 1>2# : ^ ''' @echo off python "%~nx0" " %~nx1" "%~nx2" "%~nx3" exit /b rem ^ ''' import sys import os sys.argv = [argv.strip() for argv in sys.argv] if len(sys.argv) != 4: sys.exit(1) _, file_one, file_two, out_file = sys.argv for file_name in [file_one, file_two]: if not os.path.isfile(file_name): print "Can't find: {0}".format(file_name) sys.exit(1) if os.path.isfile(out_file): print "Output file exists and will be overwritten" with open(out_file, "wb") as out: with open(file_one, "rb") as f1: out.write(f1.read()) with open(file_two, "rb") as f2: out.write(f2.read()) 

Si se guarda como join.bat el uso sería:

 join.bat file_one.bin file_two.bin out_file.bin 

Gracias también esta respuesta por la inspiración.