Pergunta

Eu preciso juntar dois arquivos binários com um *.bat script no Windows.

Como posso conseguir isso?

Foi útil?

Solução

janelas type comando funciona de forma semelhante ao UNIX cat.

Exemplo 1:

type file1 file2 > file3

é equivalente a:

cat file1 file2 > file3

Exemplo 2:

type  *.vcf > all_in_one.vcf  

Este comando irá mesclar todos os vcards em um.

Outras dicas

Você pode usar copy /b assim:

copy /b file1+file2 destfile

Se você tem controle sobre a máquina onde está fazendo seu trabalho, recomendo instalar GnuWin32.Basta "Baixar tudo" e deixar o programa wget recuperar todos os pacotes.Você terá então acesso a cat, grep, find, gzip, tar, less e centenas de outros.

GnuWin32 é uma das primeiras coisas que instalo em uma nova caixa do Windows.

Plugue PowerShell desavergonhado (porque acho que a curva de aprendizado é uma dor, então ensinar algo em qualquer oportunidade pode ajudar)

Get-Content file1,file2

Observe que type é um alias para Get-Content, então se preferir, você pode escrever:

type file1,file2

Basta usar o comando dos copy com vários arquivos de origem e um arquivo de destino.

copiar arquivo1+arquivo2 arquivo anexado

Você pode precisar da opção /B para arquivos binários

Na versão Redstone 1 do Windows 10, o Windows adicionou um subsistema Linux real para o kernel NTOS.Acho que originalmente o objetivo era oferecer suporte a aplicativos Android e talvez a cenários do tipo docker.A Microsoft fez parceria com a Canonical e adicionou um shell bash nativo real.Além disso, você pode usar o gerenciador de pacotes apt para obter muitos pacotes do Ubuntu.Por exemplo, você pode fazer apt-get gcc para instalar a cadeia de ferramentas GCC como faria em uma máquina Linux.

Se tal coisa existisse enquanto eu estava na universidade, acho que poderia ter feito a maioria das minhas tarefas de programação Unix no shell bash nativo do Windows.

Se você deseja simplesmente acrescentar texto ao final do arquivo existente, você pode usar o canal >>.ex:

echo new text >>existingFile.txt

Se você precisar usar um script em lote e tiver o python instalado, aqui está um poligota responda em lote e 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())

Se salvo como join.bat, o uso seria:

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

Obrigado também esta resposta pela inspiração.

Tento juntar novamente o arquivo tar que foi dividido em um servidor Linux.

E descobri que se eu usar type no Windows cmd.exe, isso fará com que o arquivo seja unido na ordem errada (ou seja, type às vezes coloca XXXX.ad primeiro e depois XXXX.ac , XXXX.aa etc ...)

Então, encontrei uma ferramenta chamada bat no GitHub https://github.com/sharkdp/bat que tem uma versão para Windows e tem melhor destaque de código e o importante é que funciona bem no Windows para reingressar no arquivo tar!

Então, eu estava procurando uma solução semelhante com a abiltidade para preservar os chars da EOL e descobri que não havia como fazer o que faço de melhor e fiz da minha própria utilidade, este é um gato nativo executável para o 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

Eu o chamo de sharp-cat porque é construído em C#, fique à vontade para fazer a varredura com um antivírus e o código-fonte será disponibilizado mediante solicitação

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top