Pregunta

Necesito unir dos archivos binarios con un *.bat secuencia de comandos en Windows.

¿Cómo puedo lograr eso?

¿Fue útil?

Solución

ventanas type El comando 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.

Otros consejos

Puedes usar copy /b como esto:

copy /b file1+file2 destfile

Si tienes control sobre la máquina donde estás haciendo tu trabajo, te recomiendo instalar GnuWin32.Simplemente "Descargar todo" y deja que el programa wget recupere todos los paquetes.Luego tendrás 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.

Enchufe desvergonzado de PowerShell (porque creo que la curva de aprendizaje es una molestia, por lo que enseñar algo en cualquier oportunidad puede ayudar)

Get-Content file1,file2

Tenga en cuenta que type es un alias de Get-Content, así que si te gusta más, puedes escribir:

type file1,file2

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

copiar archivo1+archivo2 archivo adjunto

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

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

Si tal cosa existiera mientras estaba en la universidad, creo que podría haber realizado la mayoría de mis tareas de programación de Unix en el shell bash nativo de Windows.

Si simplemente desea agregar texto al final de un archivo existente, puede usar la tubería >>.ex:

echo new text >>existingFile.txt

Si tiene que usar un script por lotes y tiene Python instalado, aquí hay un polígono respuesta en lotes 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.

Intento volver a unirme al archivo tar que se ha dividido en un servidor Linux.

Y descubrí que si uso type en Windows cmd.exe, hará que el archivo se una en el orden incorrecto (es decir, type a veces pone XXXX.ad al principio y luego XXXX.ac, XXXX.aa, etc.)

Entonces, encontré una herramienta llamada bat en GitHub https://github.com/sharkdp/bat que tiene una compilación de Windows y tiene un mejor resaltado de código y lo importante es que funciona bien en Windows para volver a unirse al archivo tar.

Así que estaba buscando una solución similar con la abilidad para preservar los chars de EOL y descubrí que no había forma, así que hago lo que hago mejor e hice mi propia utilidad, este es un gato nativo ejecutable para Windows - https://mega.nz/#!6AVgwQhL!qJ1sxx-tLtpBkPIUx__iQDGKAIfmb21GHLFerhNoaWk

Usage: cat file1 file2 file3 file4 -o output.txt
-o | Specifies the next arg is the output, we must use this rather than ">>" to preserve the line endings

Lo llamo Sharp-cat porque está construido con C#, no dudes en escanearlo con un antivirus y el código fuente estará disponible a pedido.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top