2

職場のコンピューターに関するかなり基本的な情報を取得するために作成しようとしているバッチ ファイル スクリプトがあります。ただし、エンコードに関して深刻な問題があります。WMIC と IPCONFIG は異なるエンコーディングを出力するため、コマンドの実行時に文字化けした結果が得られます。これまでのところ、私は持っています:

@echo off

if exist "C:\%computername%-info.txt" (
    echo Your computer information is already published! Skipping
) else (

    ipconfig /all > "C:\%computername%-info.txt" 
    wmic bios get serialnumber >> "C:\%computername%-info.txt"
)

pause

結果は...奇妙なものです。これらの各ツールのエンコードされた出力が何であるかはわかりませんが、まだ追加する必要があります...誰か修正を知っていますか? コードページ (chcp) についてはよくわかりませんが、いくつか試してみましたが、同じ文字化けした結果が得られます。

4

3 に答える 3

4

Ipconfig の出力は ANSI、wmic は Unicode です

ipconfig の前に wmic を出力すると、読み取ったときに unicode と見なされます。これは、開始またはファイルがそれであるためです。また、2バイト文字がないため、ipconfigの出力はガベージです。

wmic の前に ipconfig を使用すると、ファイルは ansi と見なされ、wmic の出力はスペースで区切られます

find を使用してフィルタリングし、ansi に再エンコードします

wmic bios get serialnumber | find /v "" >> "C:\%computername%-info.txt"

したがって、すべてのコマンド出力は ansi です。

于 2013-10-21T20:29:39.447 に答える
2

WMIC出力エンコーディングはです。同じエンコーディングを使用してUnicodeいるかどうかはわかりません。Ipconfig

の出力エンコーディングを に設定してみてCMDくださいANSI:

CMD /A /C "Your command here"

コマンド /? ヘルプ:

/A 出力 ANSI 文字


次に、これを試してください:

CMD /A /C "ipconfig /all > "C:\%computername%-info.txt""
CMD /A /C "wmic bios get serialnumber >> "C:\%computername%-info.txt""
于 2013-10-21T20:14:28.417 に答える