Board logo

标题: [文本处理] [已解决]批处理命令copy /b 合拼文件之后为啥打开不会报错? [打印本页]

作者: mimixi666    时间: 2014-7-7 11:20     标题: [已解决]批处理命令copy /b 合拼文件之后为啥打开不会报错?

本帖最后由 mimixi666 于 2014-7-8 15:12 编辑

我们都知道:
copy /b 2.png+2.rar 5.png
可以合成一个新文件,既可以用图片软件打开,又可以用解压缩文件软件来打开。。
但是我明白的是为啥打开不会报错?
原理不是很懂。。
里面的编码不会乱码?
为啥能打开的?
很疑惑。。
作者: jingyu9575    时间: 2014-7-7 13:01

用十六进制编辑器看,PNG的结尾有IEND数据:
  1. 00 00 00 00 49 45 4E 44 AE 42 60 82
复制代码
RAR的开头有文件格式说明(Rar!):
  1. 52 61 72 21 1A 07
复制代码
两个软件分别读取IEND的前面和Rar!的后面。
作者: mimixi666    时间: 2014-7-7 15:06

回复 2# jingyu9575


你的意思是如果开头或者结尾和相关软件不一致的话,
那么其它数据就是过滤掉不作处理的?
作者: CrLf    时间: 2014-7-7 16:43

回复 3# mimixi666


    有的文件格式在结尾处标明了特征码
    有的文件格式在开头处标明了特征码
    还有些是在开头处定义了文件的有效长度

总之,“知道头在哪的文件格式”往往可以接续在“知道脚在哪的文件格式”后面,而不影响执行效果
作者: jingyu9575    时间: 2014-7-7 17:26

回复 3# mimixi666

合成的文件被WinRAR识别为“自解压格式 RAR 压缩文件”,这可能说明了一些原因,一般的自解压文件都是EXE类型,只能以EXE的文件头开头,RAR的压缩内容只能放在后边,WinRAR为了能够识别这些文件,便设定了一个标志Rar!,忽略这个标志之前的部分。
作者: mimixi666    时间: 2014-7-8 15:11

回复 4# CrLf


    原来是这样,明白了,谢谢。。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2