0
我想已經從Windows命令寫入的輸出後,追加字符串「KB」到一個文件:追加在Windows中使用文件>>顯示奇怪的字符
C:\Users\Administrator> wmic OS get FreePhysicalMemory > C:\temp\temp.txt
C:\Users\Administrator> echo KB >> C:\temp\temp.txt
,但在記事本中我看到一些奇怪的東方字符而不是KB
FreePhysicalMemory
1441960
䉋ഠ∊䉋•
我期望看到文字「FreePhysicalMemory 1441960 KB」。 如果可能,我希望在數字後有KB,而不是換行。 一旦我這樣做,我將與另一個程序(InterSystemsCaché)一起使用該文件,並將其放在另一個html文件中,但這應該不重要。
您不需要連接到more.com。 CMD的for循環運行wmic.exe,其stdout被重定向到管道。這就是您需要製作wmic.exe輸出OEM編碼文本的全部內容。一般來說,請注意這裏的mojibake,因爲CMD使用當前的控制檯代碼頁解碼輸出行,否則在沒有控制檯(即分離)的情況下運行時使用ANSI。控制檯默認爲OEM,但它可能已通過chcp.com更改。 – eryksun
for循環可以解決wmic.exe中的一個bug。 C運行時低I/O文件描述符在文本模式下打開,該模式翻譯LF => CRLF。 wmic.exe會寫入已經以CRLF結尾的行,因此C運行庫最終會寫入以CRCRLF結尾的行。第一個'for'循環在最後的CRLF上分割行,但在每行上留下尾隨的CR。 – eryksun
通常wmic.exe將其輸出編碼爲OEM文本,可能會錯誤地編碼Unicode字符串,如文件名,註冊表文本和用戶名。如果這可能是一個問題,最好讓它將UTF-16寫入文件。 – eryksun