2014-11-24 119 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 
相关问题