script files create commands batch windows command-line scripting

windows - files - dos script commands



¿Hay reemplazo para el gato en Windows (9)

El comando de type Windows funciona de manera similar a 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.

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

¿Cómo puedo lograr eso?


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 soportar aplicaciones de Android, y tal vez escenarios 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 que apt-get gcc instale la cadena de herramientas GCC como lo haría en un cuadro 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 bash nativo de Windows.


Enchufe PowerShell desvergonzado (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


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

Y encontré que si uso el type en el cmd.exe de Windows, hará que el archivo se una en el orden incorrecto (es decir, el type veces coloca 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.


Puedes usar copy /b así:

copy /b file1+file2 destfile


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

echo new text >>existingFile.txt


Si tiene control sobre la máquina en la que está haciendo su trabajo, le recomiendo que instale GnuWin32 . Simplemente "Descargue todos" y deje 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.


Si tiene que usar una secuencia de comandos por lotes y tiene Python instalado aquí hay una respuesta de 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 uso join.bat sería:

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

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


Simplemente use el comando dos copy con varios archivos de origen y un archivo de destino.

copiar archivo1 + archivo2 archivo adjunto

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