Domanda

Devo unire due file binari con a *.bat script su Windows.

Come posso raggiungere questo obiettivo?

È stato utile?

Soluzione

finestre type il comando funziona in modo simile a UNIX cat.

Esempio 1:

type file1 file2 > file3

è equivalente a:

cat file1 file2 > file3

Esempio 2:

type  *.vcf > all_in_one.vcf  

Questo comando unirà tutte le vcard in una sola.

Altri suggerimenti

Puoi usare copy /b come questo:

copy /b file1+file2 destfile

Se hai il controllo sulla macchina su cui stai svolgendo il tuo lavoro, ti consiglio vivamente di installarlo GnuWin32.Basta "Scarica tutto" e lascia che il programma wget recuperi tutti i pacchetti.Avrai quindi accesso a cat, grep, find, gzip, tar, less e centinaia di altri.

GnuWin32 è una delle prime cose che installo su una nuova macchina Windows.

Plug Shameless PowerShell (perché penso che la curva di apprendimento sia una seccatura, quindi insegnare qualcosa in ogni occasione può aiutare)

Get-Content file1,file2

Notare che type è un alias di Get-Content, quindi se ti piace di più puoi scrivere:

type file1,file2

Basta usare il comando dos copy con più file di origine e un file di destinazione.

copia file1+file2 file aggiunto

Potrebbe essere necessaria l'opzione /B per i file binari

Nella versione Redstone 1 di Windows 10, Windows ha aggiunto un vero sottosistema Linux per il kernel NTOS.Penso che originariamente fosse destinato a supportare le app Android e forse scenari di tipo docker.Microsoft ha collaborato con Canonical e ha aggiunto una vera shell bash nativa.Inoltre, puoi utilizzare il gestore pacchetti apt per ottenere molti pacchetti Ubuntu.Ad esempio, puoi eseguire apt-get gcc per installare la catena di strumenti GCC come faresti su una macchina Linux.

Se una cosa del genere fosse esistita mentre ero all'università, penso che avrei potuto svolgere la maggior parte dei miei compiti di programmazione Unix nella shell bash nativa di Windows.

Se vuoi semplicemente aggiungere del testo alla fine del file esistente, puoi utilizzare la pipe >>.ex:

echo new text >>existingFile.txt

Se devi utilizzare uno script batch e hai installato Python, ecco un file poligotto risposta in batch 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 salvato come join.bat, l'utilizzo sarebbe:

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

Grazie anche questa risposta per l'ispirazione.

Provo a ricongiungermi all'archivio tar che è stato suddiviso in un server Linux.

E ho trovato se lo uso type in Windows cmd.exe, ciò causerà l'unione del file nell'ordine sbagliato (ad es. type a volte metterà prima XXXX.ad e poi XXXX.ac , XXXX.aa ecc ...)

Quindi, ho trovato uno strumento chiamato bat su GitHub https://github.com/sharkdp/bat che ha una build Windows e ha una migliore evidenziazione del codice e la cosa importante è che funziona bene su Windows per ricongiungersi all'archivio tar!

Quindi stavo cercando una soluzione simile con l'abilità per preservare i caratteri EOL e ho scoperto che non c'era modo, quindi faccio ciò che faccio meglio e ho reso la mia utility questo è un gatto nativo eseguibile per 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 chiamo sharp-cat perché è costruito con C#, sentiti libero di scansionare con un antivirus e il codice sorgente sarà reso disponibile su richiesta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top