我有一些麻烦的cmd.exe,我用它有时创建文件和写有输出。 但如果我尝试这样的:
wmic logicaldisk get name, freespace >> output.txt
echo %date% >> output.txt
我开始它的2-3倍,我得到像output.txt的:
FreeSpace Name
17990881280 C:
D:
㠱〮⸴〲㈱ഠ䘊爀攀攀匀瀀愀挀攀 一愀洀攀 ഀ㜀㤀㤀 㠀㠀㈀㠀 䌀㨀 ഀ 䐀㨀 ഀ⸸㐰㈮′
嗯,这中国的文字有看起来很滑稽,但我想看到的日期。 我觉得莫名其妙的编码与更改日期。 因为如果我这样做呼应%日期%>> output.txt的单独一切都很好,我得到的日期。 我应该怎么做,我想获得WMIC输出和日期。 有任何想法吗? 谢谢
WMIC有一些奇怪的输出。 我见过的讨论,其中有人说WMIC使用Unicode,但我认为情况比这要复杂得多。 如果我捕捉WMIC输出到文件中,并使用十六进制编辑器,我看到在每行的最后一个额外的回车。 我手足无措,不知如何当output.txt中键入日期的内容被转换成乱码是完全。 (代码页问题?但如何?)在我的机器,我得到问号其中的日期应该是。
我能够通过使用来解决这个问题
wmic logicaldisk get name, freespace | more >>output.txt
echo %date%>>output.txt
其原因是,WMIC输出到UNICODE。 尽管批量默认命令输出到ANSI。 由于ANSI代码页比UNICODE小,映射不同,它们之间的转换成为问题。 有几种方法来解决这个问题。
A.与/ U开关启动命令外壳,或者如果已经在命令提示,只需要输入CMD / U。
从“帮助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文件是PowerShell的输出格式的ASCII,UTF8和UTF7兼容,所有其他输出格式导致文件中看到多余的空格创建一个txt输出文件。
如果输出文件与powershells标准输出“>>”创建那么任何标准输出增加,从一个批处理脚本的文件将显示为中国文字。
在我的情况的解决方法是重新创建一个批处理脚本输出文件,这将是正确的格式,并随后PowerShell的增加必须使用“|出文件 - 编码ASCII / UTF8 / UTF7”