Necesito unir dos archivos binarios con un *.bat
script en Windows.
¿Cómo puedo lograr eso?
type
puede reemplazar solo una parte de cat
la funcionalidad de (debido a la distinción entre archivos binarios y de texto en Windows).
Necesito unir dos archivos binarios con un *.bat
script en Windows.
¿Cómo puedo lograr eso?
type
puede reemplazar solo una parte de cat
la funcionalidad de (debido a la distinción entre archivos binarios y de texto en Windows).
Respuestas:
El type
comando de 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.
type file1 file2 > file3 2>NUL
Puedes usar copy /b
así:
copy /b file1+file2 destfile
type
descritos en los comentarios sobre la respuesta aceptada ... ¡a menos que esta solución tenga inconvenientes similares pero no sea lo suficientemente popular como para que la gente los note!
Si tiene control sobre la máquina donde está haciendo su trabajo, le recomiendo instalar GnuWin32 . Simplemente "Descargar todo" y deje que el programa wget recupere todos los paquetes. Luego 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.
Shameless PowerShell plug (porque creo que la curva de aprendizaje es un dolor, 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
type file1 file2 > dest
y cada uno se hizo en segundos.
-Encoding UTF8
No cambió nada.
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 de tipo docker. Microsoft se asoció con Canonical y agregó un shell bash nativo real. Además, puede usar el administrador de paquetes apt para obtener muchos paquetes de Ubuntu. Por ejemplo, puede hacer apt-get gcc para instalar la cadena de herramientas GCC como lo haría en una caja de Linux.
Si tal cosa existiera mientras estaba en la universidad, creo que podría haber hecho la mayoría de mis tareas de programación de Unix en el shell nativo de Windows bash.
Si tiene que usar un script por lotes y tiene instalado Python, aquí hay una respuesta polygot en batch 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 reunirme con el archivo tar que se ha dividido en un servidor Linux.
Y descubrí que si lo uso type
en Windows cmd.exe
, causará que el archivo se una en un orden incorrecto (es decir, a type
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 unirse al archivo tar.
Así que estaba buscando una solución similar con la habilidad de preservar los caracteres de EOL y descubrí que no había forma, así que hago lo que mejor hago 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 ya que está construido con C #, no dude en escanear con un antivirus y el código fuente estará disponible a pedido
El comando de tipo Windows tiene problemas, por ejemplo, con caracteres Unicode en el límite de 512 bytes. Prueba el gato de Cygwin.