I have some trouble with cmd.exe
. I use it sometimes to create files and write there the output. But if I try this:
wmic logicaldisk get name, freespace >> output.txt
echo %date% >> output.txt
And I start it two to three times, I get an output.txt
like:
FreeSpace Name
17990881280 C:
D:
㠱〮⸴〲㈱ഠ䘊爀攀攀匀瀀愀挀攀 一愀洀攀 ഀ㜀㤀㤀 㠀㠀㈀㠀 䌀㨀 ഀ 䐀㨀 ഀ⸸㐰㈮′
Well, the Chinese text there looks funny, but I would like to see the date. I think somehow the encoding is changed with date. Everything is fine and I get the date if I do echo %date% >> output.txt
alone.
I would like to get the wmic
output and the date.
What should I do?
The reason is that WMIC outputs to UNICODE. While the batch commands outputs to ANSI by default. Since the ANSI codepage is smaller than UNICODE and mapped differently, converting between them becomes a problem. There are several ways to solve this problem.
A. Start the command shell with the /U switch or if already in a command prompt, just type cmd /U.
Help from the "Help cmd" command: /U Causes the output of internal commands to a pipe or file to be Unicode
Thus, you will end up with a UNICODE text file and your original code needs no modification. However, you will need to remember to always use the /U switch. Also the correct way to do it is :
wmic /OUTPUT:output.txt logicaldisk get name, freespace
echo %date% >> output.txt
B. Convert the WMIC output to ANSI (Recommended. However depends on what you need. Just makes life easier when you decide to add to the text file. However, you will have to use 2 output files.).
wmic /OUTPUT:output.tmp logicaldisk get name, freespace TYPE output.tmp > output.txt echo %date% >> output.txt
Hope this will help someone.
WMIC has some weird output. I've seen a discussion where it was said WMIC uses unicode, but I think the situation is more complicated than that. If I capture WMIC output to a file and use a hex editor, I see an extra carriage return at the end of each line. I am completely at a loss as to how the date content is converted into gibberish when the output.txt is typed. (codepage issue? but how?) On my machine I get question marks where the date should be.
I was able to fix the problem by using
wmic logicaldisk get name, freespace | more >>output.txt
echo %date%>>output.txt
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With