349 votes

Existe-t-il un remplacement pour le chat sur Windows

J'ai besoin de joindre deux fichiers binaires avec un *.bat script sur Windows.

Comment puis-je y parvenir ?

20 votes

Votre question titre et votre question description ne sont pas totalement synchronisées. type serait la meilleure réponse pour la question titre et copy /b serait la meilleure réponse pour la question description. Vous pourriez vouloir changer ce titre si possible.

2 votes

@Joseph type ne peut remplacer qu'une partie de cat (en raison de la distinction entre les fichiers binaires et les fichiers texte sous Windows).

0 votes

Cross-duplicate : superuser.com/q/434870/52365

505voto

Nathan Jones Points 1480

Windows type fonctionne de la même manière que la commande UNIX cat .

Exemple 1 :

type file1 file2 > file3

est équivalent à :

cat file1 file2 > file3

Exemple 2 :

type  *.vcf > all_in_one.vcf  

Cette commande va fusionner toutes les cartes virtuelles en une seule.

1 votes

Le problème de type dans cette situation est qu'il ajoute des en-têtes de fichiers non désirés lors de la saisie de plus d'un fichier spécifié sur la ligne de commande.

2 votes

Lorsque vous spécifiez plus d'un fichier sur la ligne de commande, tape sort quelques lignes vides et le nom du fichier, avant de copier le contenu du fichier. Essayez-le :)

4 votes

Ah, je n'avais pas remarqué que les en-têtes allaient vers stderr. C'est bon à savoir.

92voto

Greg Hewgill Points 356191

Vous pouvez utiliser copy /b comme ça :

copy /b file1+file2 destfile

5 votes

Pour une séquence de fichiers, vous pouvez utiliser des caractères de remplacement comme "copy /b file* destfile".

1 votes

Il me semble étrange que ce ne soit pas la réponse acceptée, étant donné les problèmes apparents avec type dans les commentaires de la réponse acceptée... sauf si cette solution présente des inconvénients similaires mais n'est pas assez populaire pour que les gens les notent !

0 votes

Merci ! Cela fonctionne pour moi. Pour une raison quelconque type répète le contenu deux fois dans le fichier de sortie.

24voto

David Citron Points 9231

Si vous avez le contrôle de la machine où vous travaillez, je vous recommande vivement d'installer GnuWin32 . Il suffit de "Télécharger tout" et de laisser le programme wget récupérer tous les paquets. 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 boîte Windows.

0 votes

Je recommande GetGnuWin32 (pour simplifier l'installation).

3 votes

Si l'utilisation d'un utilitaire externe est acceptable, je préfère busybox pour Windows qui est un seul exe de ~600 kB incorporant ~30 utilitaires Unix. La seule différence est que l'on doit utiliser la commande "busybox cat" au lieu du simple "cat".

17voto

Jay Bazuzi Points 20462

Une publicité éhontée pour PowerShell (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

Notez que type est un alias pour Get-Content, donc si vous le préférez, vous pouvez l'écrire :

type file1,file2

1 votes

Cela fonctionne, mais c'est très lent. J'ai trouvé cette question alors que j'attendais que powershell concatène de gros fichiers vidéo, ce qui prenait une demi-heure par fichier. J'ai tué le processus et essayé avec cmd en utilisant type file1 file2 > dest et chacun a été fait en quelques secondes.

0 votes

Il a converti mes fichiers en UTF-16, pour une raison quelconque. -Encoding UTF8 n'a rien changé.

7voto

simon Points 2319

Il suffit d'utiliser la commande dos copy avec plusieurs fichiers sources et un fichier de destination.

copy file1+file2 appendedfile

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X