sab*_*abi 5 windows shell cmd batch-file
我有一些cmd.exe的问题,我有时用它来创建文件并在那里写输出.但如果我试试这个:
wmic logicaldisk get name, freespace >> output.txt
echo %date% >> output.txt
Run Code Online (Sandbox Code Playgroud)
我开始它2-3次,我得到一个output.txt像:
FreeSpace Name
17990881280 C:
D:
????????????????????????????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)
那么这个中文文本看起来很有趣,但我希望看到日期.我想某种程度上编码随日期而改变.因为如果我单独回显%date%>> output.txt一切都很好,我得到了日期.我该怎么办,我想获得wmic输出和日期.有任何想法吗?谢谢
原因是WMIC向UNICODE提出了产出.虽然批处理命令默认输出为ANSI.由于ANSI代码页小于UNICODE并且映射不同,因此在它们之间进行转换会成为问题.有几种方法可以解决这个问题.
A.使用/ U开关启动命令shell,或者如果已经在命令提示符中,只需键入cmd/U.
来自"帮助cmd"命令的帮助:/ U使管道或文件的内部命令输出为Unicode
因此,您最终将获得UNICODE文本文件,并且您的原始代码无需修改.但是,您需要记住始终使用/ U开关.另外正确的方法是:
wmic /OUTPUT:output.txt logicaldisk get name, freespace
echo %date% >> output.txt
Run Code Online (Sandbox Code Playgroud)
B.将WMIC输出转换为ANSI(推荐.但是取决于你需要的东西.当你决定添加到文本文件时,只是让生活更轻松.但是,你必须使用2个输出文件.).
Run Code Online (Sandbox Code Playgroud)wmic /OUTPUT:output.tmp logicaldisk get name, freespace TYPE output.tmp > output.txt echo %date% >> output.txt
希望这会对某人有所帮助.
WMIC有一些奇怪的输出.我看过一个讨论,据说WMIC使用unicode,但我认为情况比这更复杂.如果我将WMIC输出捕获到文件并使用十六进制编辑器,我会在每行的末尾看到一个额外的回车符.在输入output.txt时,我完全不知道日期内容如何转换成乱码.(代码页问题?但是如何?)在我的机器上,我得到了日期应该在哪里的问号.
我能够通过使用来解决问题
wmic logicaldisk get name, freespace | more >>output.txt
echo %date%>>output.txt
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7467 次 |
| 最近记录: |