Le /b
drapeau de la copy
commande traite les fichiers comme binaires (c'est-à-dire un flux brut d'octets sans signification) et les copie octet par octet au lieu du /a
comportement par défaut (ou du ) qui les traite comme des lignes de texte (avec fin de ligne caractères, fin de fichiers, etc.)
Vous pouvez fusionner des fichiers texte avec le comportement de texte par défaut ou le commutateur binaire, mais à peu près n'importe quel fichier binaire ne fonctionnera pas. Vous ne pouvez pas simplement copier les octets de deux fichiers binaires et vous attendre à ce qu'ils fonctionnent car les fichiers binaires ont généralement des en- têtes , des métadonnées et des structures de données, etc. qui définissent le format du fichier. Si vous effectuez une copie binaire, vous copiez simplement tous les octets tels quels, ce qui finit par mettre ces structures à des endroits où elles ne devraient pas être, donc lorsque vous les ouvrez, la fonction d'analyse aura des problèmes et verra ce qui est essentiellement des données corrompues . Certains programmes ignoreront les parties qui n'ont pas de sens et montreront simplement ce qu'ils peuvent (ce qui permet à la stéréographie de fonctionner), mais certains lanceront une erreur et se plaindront que le fichier est corrompu. La capacité de détecter la corruption dépend du type de fichier.
À titre d'exemple, inventons un format PDF simplifié:
Byte(s) Meaning
---------------------
File header:
0-1 # of Pages
2-3 Language
4-5 Font
6-EOF Data (each page encoded separately)
Page data:
0-1 Page number
2-3 # of characters on page
4-#chars Letters contained on the page
Comme vous pouvez le voir, chaque fichier contiendra un en-tête de niveau fichier avec des informations générales, suivi de blocs de données pour chaque page contenant les données de la page. Si vous prenez ensuite deux fichiers, chacun contenant une page et les fusionnez en tant que fichiers binaires, vous ne créerez pas un fichier de deux pages, mais plutôt un fichier corrompu qui commence par une page, puis contient un tas de fichiers indésirables (le fichier l'en-tête n'a aucun sens lorsque le programme essaie de lire la page deux).
La même chose se produit pour vos MP3. Lorsque vous les avez combinés comme ça, les balises ID3 au début et / ou à la fin du deuxième fichier sont conservées, et lorsque le lecteur essaie de lire la trame suivante, il attend des données audio, mais trouve l'en-tête de la deuxième fichier qui ne correspond pas au format attendu pour les données audio, il ne sait donc pas quoi faire. Certains joueurs joueront l'en-tête en tant que données audio (qui joueront probablement en tant que statique / bruit / pop / etc.), certains couperont le son jusqu'à la prochaine image correcte, certains peuvent arrêter complètement la lecture de la chanson, et certains peuvent même planter .
La copy
commande ne sait rien sur les types de fichiers autres que le texte brut (et même alors, uniquement le texte ASCII), donc seul le texte brut peut être combiné correctement avec lui. Les fichiers binaires doivent être combinés à l'aide d'un éditeur qui sait analyser et interpréter correctement le contenu.