Question

Je dois joindre deux fichiers binaires avec un *.bat script sous Windows.

Comment puis-je y parvenir ?

Était-ce utile?

La solution

les fenêtres type la commande fonctionne de manière similaire à UNIX cat.

Exemple 1:

type file1 file2 > file3

est équivalent à :

cat file1 file2 > file3

Exemple 2 :

type  *.vcf > all_in_one.vcf  

Cette commande fusionnera toutes les vcards en une seule.

Autres conseils

Vous pouvez utiliser copy /b comme ça:

copy /b file1+file2 destfile

Si vous contrôlez la machine sur laquelle vous effectuez votre travail, je vous recommande fortement d'installer GnuWin32.Juste "Télécharger tout" et laissez le programme wget récupérer tous les packages.Vous aurez alors accès à cat, grep, find, gzip, tar, less et des centaines d'autres.

GnuWin32 est l'une des premières choses que j'installe sur une nouvelle machine Windows.

Prise PowerShell sans vergogne (parce que je pense que la courbe d'apprentissage est pénible, donc enseigner quelque chose à n'importe quelle occasion peut aider)

Get-Content file1,file2

Noter que type est un alias pour Get-Content, donc si vous l'aimez mieux, vous pouvez écrire :

type file1,file2

Utilisez simplement la commande dos copy avec plusieurs fichiers sources et un fichier de destination.

copier fichier1+fichier2 fichier ajouté

Vous pourriez avoir besoin de l'option /B pour les fichiers binaires

Dans la version Redstone 1 de Windows 10, Windows a ajouté un véritable sous-système Linux pour le noyau NTOS.Je pense qu'à l'origine, il était destiné à prendre en charge les applications Android, et peut-être des scénarios de type Docker.Microsoft s'est associé à Canonical et a ajouté un véritable shell bash natif.Vous pouvez également utiliser le gestionnaire de packages apt pour obtenir de nombreux packages Ubuntu.Par exemple, vous pouvez faire apt-get gcc pour installer la chaîne d'outils GCC comme vous le feriez sur une machine Linux.

Si une telle chose existait pendant que j'étais à l'université, je pense que j'aurais pu effectuer la plupart de mes tâches de programmation Unix dans le shell bash natif de Windows.

Si vous souhaitez simplement ajouter du texte à la fin d'un fichier existant, vous pouvez utiliser le tube >>.ex:

echo new text >>existingFile.txt

Si vous devez utiliser un script batch et installer Python, voici un polygote réponse en batch et 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())

S'il est enregistré en tant que join.bat, l'utilisation serait :

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

Merci aussi cette réponse pour l'inspiration.

J'essaie de rejoindre l'archive tar qui a été divisée sur un serveur Linux.

Et j'ai trouvé si j'utilise type dans Windows cmd.exe, cela entraînera la jointure du fichier dans le mauvais ordre (c'est-à-dire type parfois mettra XXXX.ad en premier puis XXXX.ac , XXXX.aa etc ...)

J'ai donc trouvé un outil nommé bat dans GitHub https://github.com/sharkdp/bat qui a une version Windows et a une meilleure mise en évidence du code et l'important est que cela fonctionne bien sous Windows pour rejoindre l'archive tar !

Je cherchais donc une solution similaire avec l'Abillity pour préserver les caractères EOL et j'ai découvert qu'il n'y avait aucun moyen, donc je fais ce que je fais de mieux et j'ai fait ma propre utillity, c'est un chats natifs exécutable pour 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

Je l'appelle Sharp-Cat car il est construit en C#, n'hésitez pas à le scanner avec un antivirus et le code source sera mis à disposition sur demande.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top