5

に問題がありcmd.exeます。ファイルを作成し、そこに出力を書き込むために時々使用します。しかし、私がこれを試してみると:

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

そして、私はそれを2〜3回開始すると、次のoutput.txtようになります。

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

うーん、そこにある中国語のテキストはおかしく見えますが、日付を見てみたいです。どういうわけかエンコーディングが日付で変更されていると思います。すべてが順調で、私がecho %date% >> output.txt一人で行う場合は日付を取得します。

wmic出力と日付を取得したいと思います。

私は何をすべきか?

4

3 に答える 3

8

その理由は、WMIC が UNICODE に出力するためです。バッチ コマンドはデフォルトで ANSI に出力します。ANSI コードページは UNICODE よりも小さく、マッピングが異なるため、それらの間の変換が問題になります。この問題を解決するにはいくつかの方法があります。

A. /U スイッチを使用してコマンド シェルを起動するか、既にコマンド プロンプトが開いている場合は、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

これが誰かを助けることを願っています。

于 2013-02-22T12:53:24.553 に答える
7

WMIC には奇妙な出力があります。WMIC が Unicode を使用しているという議論を見たことがありますが、状況はそれよりも複雑だと思います。WMIC 出力をファイルにキャプチャし、16 進エディタを使用すると、各行の末尾に余分なキャリッジ リターンが表示されます。output.txt を入力すると、日付の内容が意味不明に変換される方法について、私は完全に途方に暮れています。(コードページの問題? しかしどうやって?) 私のマシンでは、日付があるべき場所に疑問符が表示されます。

を使用して問題を解決できました

wmic logicaldisk get name, freespace | more >>output.txt
echo %date%>>output.txt 
于 2012-04-18T14:30:48.567 に答える