我有多个.txt文件正在作为批处理文件的输出创建。当我在记事本中打开它们时,它们都用英语正确显示。但是,如果我跑:
type file1.txt >> file2.txt
file1中的附加文本显示为file2中不可读的字符。更改字体无济于事。
这是某种需要更改的编码吗?
如何使用原始文件的外观和格式附加它?
答案 0 :(得分:3)
此问题与cmd is somehow writing chinese text as output类似。
文本文件是Unicode文本文件,很可能使用UTF-16小端编码。
要使用命令type
将Unicode文本文件 file1.txt 正确附加到Unicode文本文件 file2.txt ,必须启动命令行解释器{ {1}}使用开关cmd.exe
将内部命令输出重定向到文件或以Unicode格式传送到另一个命令。
由于Aacini建议已经正确,所以要使用的命令行是
/U
连接2个或多个文本文件的另一种方法是使用复制命令。
cmd /U /C type file1.txt >> file2.txt
在这种情况下,即使文本文件是以UTF-16而不是ANSI编码,也没有必要使用开关copy "Text File 1.txt" + "Text File 2.txt" + "Text File 3.txt" "Output File.txt"
调用cmd.exe
。
命令/U
会自动删除文本文件2.txt 和文本文件3.txt 的字节顺序标记(BOM),如果所有3个文本文件都是带有BOM的Unicode文本文件。 输出File.txt 在这种情况下只包含一次BOM开始。
copy
将目录中的所有文本文件连接到名为 Output File.txt 的文件。
注1:
NTFS文件系统驱动程序根据文件名始终按字母顺序(不是字母数字!)返回目录中的* .txt文件列表。因此,文件名在NTFS分区上确定文本文件的连接顺序。但FAT32文件系统驱动程序根据文件分配表中的列表返回目录中的* .txt文件列表,如果在copy *.txt "Output File.txt"
上使用上述命令,则会导致FAT32分区上文本文件串联的不可预测顺序
注2:
使用命令*.txt
非常重要的是所有文本文件都具有相同的编码,即所有文本文件都是UTF-16编码或所有文本文件都是ANSI编码的。
注3:
命令copy
也可用于连接二进制文件。在命令提示符窗口copy
或copy /?
中输入一个简短的帮助,解释可选的开关help copy
(二进制文件)和/B
(ASCII / ANSI文本文件)。