使用 DOS 复制命令语法连接文件:
copy file1.txt+file2.txt all.txt
我知道我能做到...
copy file1.txt+file2.txt file1.txt
这有效吗?它能达到我的预期吗?它能工作,但我想知道它实际上是附加到 file1.txt 还是复制 file1.txt(不好),连接 file2 然后重命名为 file1.txt(这效率不高)?
答案1
copy
是将file1.txt
和复制file2.txt
到内存中,将它们连接起来然后写入file1.txt
。它不是复制到新文件然后重命名该文件,因此实际上没有太多额外的磁盘 I/O。
您也可以使用type
。
type file2.txt >> file1.txt
该>>
操作符会附加文本。但这当然不适用于二进制文件。
答案2
这有效吗?
当然。但是,使用开关/b
可以/可能通过简单地连接字节而不是将文件处理为文本来提高性能。这在连接非常大的文本文件时尤其明显。
它达到了我期望的效果吗?
通常情况下是的,但如果文件是在 Linux、Mac 或其他具有不同文件/行终止符的系统上创建的,则可能会产生意外结果。/b
一般情况下,使用开关是个好主意,即使对于文本文件也是如此。
我想知道它是否实际上附加到 file1.txt 还是复制 file1.txt(不好),连接 file2 然后重命名为 file1.txt(效率不高)?
是的,它正在创建一个新的临时文件,删除原始文件,然后将临时文件重命名为原始名称,但删除和重命名并不需要时间,除非原始文件很大,否则您通常不会注意到原始文件的(冗余)复制。
答案3
如果它们的扩展名相同,你可以这样做 -
类型*.txt >> fileout.tmp
。
然后重命名fileout.tmp
为适当的扩展名。
答案4
查找文件所在的基目录
dir /b /s *.xml > dirlist.txt
dirlist.txt
使用复制+替换编辑每一行,即-l:\dir1\dir2\file.xml
l:\
用。。。来代替" m:\dest.txt<br>copy /b m:\dest.txt+"
- 将文件另存为
dirlist.htm
- 在浏览器中打开文件
- 将结果复制回编辑器
- 修复第一行和最后一行
- 将文件另存为
.bat
- 打开命令提示符并运行
.bat
文件
二进制复制的结果附加到m:\dest.txt
*注:我确实记得旧的 MS-DOS 会在内部破解具有相同源和目标(64k)的文件。对于非常大的文件产品,使用临时文件会更安全。如果操作系统由于内部缓冲区限制或编码不佳而无法使用临时文件处理任务,则 DOS 将无法完成该任务。
*注意:对于任何接近 1 GB 的附加目标文件,我建议将所有目标文件复制到临时目录并提交copy /b *.*; target.file
。