使用DOS命令可以对文件进行合并,可处理的文件包括文本文件和二进制文件。
1、二进制文件
使用copy /b命令对二进制文件进行合并,也可理解为直接将多个文件的二进制码进行合并。copy命令在官方帮助中的格式为:
COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/L] [/A | /B] source [/A | /B] [+ source [/A | /B] [+ …]] destination [/A | /B]
其中:
source:指定要复制的文件
/A:表示一个ASCII文本文件
/B:表示一个二进制文件
destination:指定新文件的目录和/或文件名
当合并多个文件时可使用通配符或file1+file2+file3的格式
例如需要合并名称为1.bin、2.bin、10.bin的二进制文件,合并后的文件取名all.bin,可在cmd窗口中编写如下代码:
copy /b 1.bin + 2.bin +10.bin all.bin
copy 1.bin /b +2.bin /b + 10.bin /b all.bin
当这三个文件均在同一个文件夹中时,可使用通配符,代码如下:
copy /b *.bin all.bin
注意合并文件的顺序是1.bin+10.bin+2.bin
2、文本文件
使用copy /a命令或type命令对文本文件进行合并,copy /a命令使用方法与copy /b相同,type命令的官方帮助解释是:显示文本文件的内容,通过重定向操作符>或>>输出到指定文件。
例如有金庸的14部小说的.txt文件(飞雪连天射白鹿笑书神侠倚碧鸳),且放在同一个目录内,需要合并成1个文本文件,可编写代码如下:
type *.txt > ..\金庸.txt
则会在上一级目录下创建一个名称为“金庸.txt”的文本文件,并将所有小说内容进行合并。注意:被合并的文件同样按照命名顺序进行排列,合并前可在文件名前增加排序号进行排序。重定向操作符后的..\表示在上一级目录下创建合并的文本文件,避免type命令执行过程中将“金庸.txt”内容再次进行输出。
可使用for /f或for /l命令进行批量输入,提前将被合并的文件名列表写在list.txt中,代码如下。注意此时重定向操作符应为>>。
for /f %a in (list.txt) do type %a.txt >> all.txt
当文件名为连续数字时,可编写如下代码:
for /l %i in (1, 1, 14) do type %i.txt >> all.txt
3、通过合并进行隐藏
Windows系统通过后缀名进行文件分类,但本质上每个文件都是二进制码,将文件的二进制码进行合并,可将后者的二进制信息隐藏于前者的二进制码后,且正常操作时系统不会识别。例如将.rar隐藏于.jpg中,将.jpg隐藏于.doc中,将.doc隐藏于.xls中,可编写代码如下:
copy /b 图片.jpg + 压缩包.rar 新图片.jpg
copy /b 文档.doc + 图片.jpg 新文档.doc
copy /b 表单.xls + 文档.doc 新表单.xls
被隐藏的文件二进制码被合并在新文件后方,待需要时取出即可。