在 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...
(这里可能显示为“�”(倾斜方块中的问号)但在控制台中它们显示为空框)
我已经尝试过这些建议,但没有成功:
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 通常使用的图形符号的打印机上打印树,则可以使用此选项。