2014-11-24 155 views
0

我正在使用批處理文件在文本文件中獲取BIOS信息。 語法我使用:通過批處理在文本文件中輸出換行

wmic bios >> information.txt 

輸出到上述語法是正確的。 接下來,我想在同一個文件的末尾寫一段文字。

這個我使用

echo. >>information>>txt 
echo. >>information.txt  
echo This is the report generated. >> information.txt 

但在文本文件的最後輸出是榿摶桶摶摣ഠ洊扤樳摶癨癤癨捤⁤ഠ洊扤樳摶癨癤癨捤WM摭癨癨榿桶摶ഠ扤扤摶癨癤癨捤⁤਍ plz help

回答

0

WMIC以unicode輸出其信息。 嘗試像這樣將它轉換爲ASCII:

for /f "delims=" %%a in ('wmic bios') do ( 
    for /f "delims=" %%z in ("%%a") do (echo %%z)>>info.txt 
) 
0

由於npocmaka已經說過,wmic給你的Unicode。

這裏是另一種方式來獲得「wmic`輸出ASCII:

wmic bios|findstr "^">information.txt 
echo additional line>>information.txt 
1

從WMIC輸出默認是沒有BOM流,每個字符2個字節爲Unicode。但echo命令的默認輸出取決於cmd啓動選項。默認情況下,cmd的輸出是每個字符1個字節。

當您查看生成的文件內容時,系統會檢測到它是unicode並使讀/寫例程適應此操作,但是當找到回顯文本時,它將作爲unicode處理,每個2個字符被視爲一個unicode焦炭。

如果所得到的文件需要是Unicode,則echo命令需要內部的cmd實例開始與/u開關來強制從echo輸出是Unicode被執行。您可以運行所有批次此CMD實例內或需要

wmic bios > information.txt 
cmd /q /u /c "echo additional line >> information.txt" 

同時撥打電話,如果最終文件需要包括BOM,可以將其包含指示wmic直接生成文件而不是重定向輸出

wmic /output:information.txt bios 

如果該文件並不需要是Unicode,您可以將輸出從wmicfindfindstrmore)過濾器將其轉換爲一個字節的字符流所以後來單字節字符echo命令正確包含在流中

(
    wmic bios 
    echo(
    echo(additional line 
)|find /v "" > information.txt 
相關問題