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.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…