2014-07-15 37 views
1

我有多个.txt文件被创建为批处理文件的输出。当我用记事本打开它们时,它们都用英文正确显示。但是,如果我运行:为什么使用type命令添加文本文件内容会导致输出文件中出现垃圾?

type file1.txt >> file2.txt 

来自file1的附加文本在file2中显示为不可读的字符。改变字体并没有帮助。

这是一种需要改变的编码吗?

如何获得此附加的原始文件的外观和格式?

+2

尝试:'cmd/U type file1.txt >> file2.txt' – Aacini

+0

当我这样做时,它只是将实际的命令提示符附加到该文件:_TEXTFROMFILE2_Microsoft Windows [Version 6.2.9200] (c)2012 Microsoft公司。版权所有。 C:\ Users \ Tech>' – LuckyLee

+0

EXCUSE ME!/C选项错过了! 'cmd/U/C类型file1.txt >> file2.txt' – Aacini

回答

2

此问题与cmd is somehow writing chinese text as output类似。

文本文件是Unicode文本文件,最有可能使用UTF-16小端编码。

要获得Unicode文本文件FILE1.TXT正确附加到使用命令type Unicode文本文件FILE2.TXT有必要开始命令行解释cmd.exe与开关/U得到重定向成内部命令的输出文件或以Unicode格式传送到另一个命令。

作为Aacini建议已经正确,使用命令行是

cmd /U /C type file1.txt >> file2.txt 

的另一种方法为串联2个或更多的文本文件是使用复制命令。

copy "Text File 1.txt" + "Text File 2.txt" + "Text File 3.txt" "Output File.txt" 

这是没有必要的,即使在文本文件中UTF-16,而不是ANSI编码这种情况下调用cmd.exe带开关/U

命令copy如果所有3个文本文件与一个BOM Unicode文本文件自动删除的文本文件2.txt文本文件3.txt字节顺序标记(BOM)。 输出File.txt包含在这种情况下仅在开始时的BOM。

copy *.txt "Output File.txt" 

会连接目录中的所有文本文件名称为输出FILE.TXT文件。

注1:
NTFS文件系统驱动程序根据文件名返回按字母顺序排列的目录总的* .txt文件列表(非字母数字字符!)。因此,文件名称会在NTFS分区上确定文本文件串联的顺序。但是,FAT32文件系统驱动程序根据文件分配表中的列表返回目录中的* .txt文件列表,如果使用上述命令与*.txt,导致FAT32分区上的文本文件连接顺序不可预知。

注2:
这是命令copy所有文本文件具有相同的编码,即使用情况很重要所有文本文件都是UTF-16编码或所有文本文件都是ANSI编码的。

注3:
命令copy也可以用来连接二进制文件。在命令提示符窗口copy /?help copy中输入以获得简短帮助,解释可选开关/B(二进制文件)和/A(ASCII/ANSI文本文件)。

相关问题