微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

cmd是以某种方式写中文文本作为输出

我有一些与cmd.exe的麻烦,我有时使用它来创build文件,并在那里写输出。 但是,如果我尝试这个:

wmic logicaldisk get name,freespace >> output.txt echo %date% >> output.txt

我开始它2-3次,我得到一个output.txt像:

FreeSpace Name 17990881280 C: D:㠱〮⸴〲㈱ഠ䘊爀攀攀匀瀀愀挀攀 一愀洀攀 ഀ਀㄀㜀㤀㤀 㠀㠀㄀㈀㠀 䌀㨀 ഀ਀ 䐀㨀 ഀ਀㄀⸸㐰㈮㄰′਍

那么这里的中文文字看起来很有趣,但我想看看date。 我认为编码随着date而改变。 因为如果我做echo%date%>> output.txt一切都很好,我得到的date。 我该怎么做,我想获得wmic输出和date。 有任何想法吗? 谢谢

长string时回声错过^字符

batch file创build日志文件

Windowsbatch file中的三重IF声明? IF和IF和IF? 其他错误

从Java生成的batch file启动程序

batch file随机删除文本文件的一半行?

通过批处理cmd重命名/删除registry中的键

python脚本可以持久地改变一个Windows环境variables吗? (典雅)

杀死在后台运行的批处理

如何执行batch file为Tortoise SVN hook

寻找一个脚本或batch file,根据部分文件名将主目录中的图片分类到各自的子目录

WMIC有一些奇怪的输出。 我曾经看过有关WMIC使用unicode的讨论,但我认为情况比这更复杂。 如果我将WMIC输出捕获到一个文件并使用十六进制编辑器,我在每行的末尾看到一个额外的回车。 当输入output.txt时,如何将日期内容转换为乱码,我完全不知所措。 (codepage问题?但如何?)在我的机器上,我得到的问号应该是日期。

我能够通过使用来解决这个问题

wmic logicaldisk get name,freespace | more >>output.txt echo %date%>>output.txt

原因是WMIC输出到UNICODE。 批处理命令输出为ANSI。 由于ANSI代码页比UNICODE小,并且映射不同,所以它们之间的转换成为一个问题。 有几种方法可以解决这个问题。

A.用/ U开关启动命令shell,或者如果已经在命令提示符下,输入cmd / U。

从“Help cmd”命令获得帮助:/ U使内部命令对管道或文件输出成为Unicode

因此,你将最终得到一个UNICODE文本文件,你的原始代码不需要修改。 但是,您需要记住始终使用/ U开关。 另外正确的方法是:

wmic /OUTPUT:output.txt logicaldisk get name,freespace echo %date% >> output.txt

B.将WMIC输出转换为ANSI(推荐使用,但是取决于你所需要的东西,只是当你决定添加到文本文件时使生活更容易,但是你将不得不使用2个输出文件)。

wmic /OUTPUT:output.tmp logicaldisk get name,freespace TYPE output.tmp > output.txt echo %date% >> output.txt

希望这会帮助别人。

我发现用于创建txt输出文件的批处理脚本使用stdout“>>”创建txt文件与powershell的输出格式ascii,utf8和utf7兼容,所有其他输出格式都会导致文件中出现额外的空格。

如果输出文件是使用powershells stdout“>>”创建的,则从批处理脚本添加文件的任何stdout都将显示中文字符。

在我的情况下,解决方法是用批处理脚本重新创建输出文件,它将采用正确的格式,随后的PowerShell添加必须使用“| out-file -encoding ascii / utf8 / utf7”

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐