命令提示符“树”在控制台中显示 Unicode,但以 ASCII 输出到文件

命令提示符“树”在控制台中显示 Unicode,但以 ASCII 输出到文件

在 Windows 10 中cmd.exe,如果我这样做

tree
C:.
├───a
│   ├───b
│   └───etc...

它清楚地在控制台上显示了 Unicode 条和破折号。

但如果我将此输出重定向到文件

tree > tree.txt

该文件的内容如下:

C:.
³ÄÄÄa
³   ÃÄÄÄb
³   ÀÄÄÄetc...

无法正确书写 Unicode 字符。

它甚至不能读出它所写的内容:

tree > tree.txt
type tree.txt
C:.
����a
�   ����b
�   ����etc...

(这里可能显示为“�”(倾斜方块中的问号)但在控制台中它们显示为空框)

我已经尝试过这些建议,但没有成功:

尝试chcp 1252chcp 65001从命令行。使用 Lucida Console 或其他字体支持。

CMD /U /c tree > tree.txt

我一直错误地使用这个命令,现在已经修复,但我仍然得到相同的结果tree- 它在控制台中显示正常,但文件输出仍然是那些奇怪的字符。

奇怪的是,文本在控制台上显示正常,但写入文件时编码却混乱。这可能是什么问题?

答案1

通常用于绘制方框字符的编码是 850,但即使这样也对我的 Windows 8.1 系统没有帮助。我只找到了一种解决cmd文本编码处理不佳的方法:使用可以很好地处理编码的程序,即 PowerShell。

重定向会>破坏字符,因此我们只需吸收输出tree并将其塞入文件中,而无需简单的cmd重定向:

Invoke-Expression "tree" | Out-File "tree.txt"

或者更短一点:

iex "tree" > "tree.txt"

要创建运行该命令然后退出的 PowerShell 实例,请在命令提示符或批处理文件中使用此命令:

powershell -command "iex \"tree\" > \"tree.txt\""

生成的文件可以在记事本或普通的type.

答案2

tree /A 使用标准 ASCII 字符显示树。如果您希望将目录树保存在文件中以供进一步处理,或者在不支持 TREE 通常使用的图形符号的打印机上打印树,则可以使用此选项。

来源:https://jpsoft.com/help/tree.htm

相关内容