Preciso juntar dois arquivos binários com um *.bat
script no Windows.
Como posso conseguir isso?
type
pode substituir apenas parte da cat
funcionalidade (devido à distinção entre arquivos binários e arquivos de texto no Windows).
Preciso juntar dois arquivos binários com um *.bat
script no Windows.
Como posso conseguir isso?
type
pode substituir apenas parte da cat
funcionalidade (devido à distinção entre arquivos binários e arquivos de texto no Windows).
Respostas:
O type
comando do Windows funciona de maneira 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 mesclará todos os cartões em um.
type file1 file2 > file3 2>NUL
Você pode usar copy /b
assim:
copy /b file1+file2 destfile
type
descritos nos comentários sobre a resposta aceita ... a menos que essa solução tenha desvantagens semelhantes, mas não seja popular o suficiente para que as pessoas as notem!
Se você tem controle sobre a máquina onde está realizando seu trabalho, eu recomendo instalar o GnuWin32 . Apenas "Download All" e deixe o programa wget recuperar todos os pacotes. Você terá acesso a cat, grep, find, gzip, tar, less e centenas de outros.
O GnuWin32 é uma das primeiras coisas que instalo em uma nova caixa do Windows.
Plug Shameless PowerShell (porque eu 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; portanto, se você gosta mais, pode escrever:
type file1,file2
type file1 file2 > dest
e cada um foi feito em segundos.
-Encoding UTF8
não mudou nada.
Na versão Redstone 1 do Windows 10, o Windows adicionou um subsistema Linux real para o kernel NTOS. Penso que originalmente se destinava a suportar aplicativos Android, e talvez 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 executar o apt-get gcc para instalar a cadeia de ferramentas GCC como faria em uma caixa do Linux.
Se isso existisse enquanto eu estava na universidade, acho que poderia ter feito a maioria das minhas tarefas de programação Unix no shell nativo do Windows.
Se você precisar usar um script em lote e instalar o python aqui, há uma resposta poligota no lote e no 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.
Eu tento reunir novamente o arquivo tar que foi dividido em um servidor Linux.
E eu descobri que se eu usar type
no Windows cmd.exe
, ele fará com que o arquivo seja unido na ordem errada. ( type
Ou seja, às vezes, coloca XXXX.ad primeiro e depois XXXX.ac, XXXX.aa etc ...)
Então, eu encontrei uma ferramenta nomeada bat
no GitHub https://github.com/sharkdp/bat que tem uma compilação do Windows, e tem melhor código destacado e o importante é que ela funciona bem no Windows para voltar ao arquivo tar!
Então, eu estava procurando uma solução semelhante com a capacidade de preservar os caracteres EOL e descobri que não havia maneira, então eu faço o que faço melhor e criei minha própria utilidade. Este é um gato nativo executável 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
Eu o chamo de sharp-cat, pois é construído com C #, sinta-se à vontade para digitalizar com um antivírus e o código-fonte será disponibilizado mediante solicitação