我正在使用批处理文件来获取文本文件中的bios信息。 我正在使用的语法:
wmic bios >> information.txt
输出到上面的语法是正确的。 接下来,我想在同一个文件的末尾写一个文本。
为此我正在使用
echo. >>information>>txt
echo. >>information.txt
echo This is the report generated. >> information.txt
但是文本文件末尾的输出是桤抟抟抟摣摣洊扤桪抟癨疖癨捤捤ഠ扤扤桪抟癨疖癨捤桪抟癨疖癨捤 请帮忙
答案 0 :(得分:1)
WMIC的默认输出是没有BOM流的unicode,每个字符2个字节。但echo
命令的默认输出取决于cmd
启动选项。默认情况下,cmd的输出是每个字符1个字节。
当您查看生成的文件内容时,系统检测到它是unicode并使读/写例程适应于此,但是当找到回显文本时,它将作为unicode处理,并且每2个字符被视为一个unicode char
如果生成的文件需要是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,您可以过滤wmic
(find
,findstr
或more
)的输出,将其转换为单字节字符串流,以便稍后单字节字符echo
命令正确包含在流
(
wmic bios
echo(
echo(additional line
)|find /v "" > information.txt
答案 1 :(得分:0)
WMIC以unicode输出其信息。 尝试这样将其转换为ASCII:
for /f "delims=" %%a in ('wmic bios') do (
for /f "delims=" %%z in ("%%a") do (echo %%z)>>info.txt
)
答案 2 :(得分:0)
正如npocmaka已经说过的那样,wmic
为你提供了Unicode。
以下是另一种以ASCII格式输出“wmic”的方法:
wmic bios|findstr "^">information.txt
echo additional line>>information.txt