通过批处理在文本文件中输出换行符

时间:2014-11-24 07:47:55

标签: batch-file text wmic

我正在使用批处理文件来获取文本文件中的bios信息。 我正在使用的语法:

wmic bios >> information.txt 

输出到上面的语法是正确的。 接下来,我想在同一个文件的末尾写一个文本。

为此我正在使用

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

但是文本文件末尾的输出是桤抟抟抟摣摣洊扤桪抟癨疖癨捤捤⁤ഠ扤扤桪抟癨疖癨捤桪抟癨疖癨捤⁤਍ 请帮忙

3 个答案:

答案 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,您可以过滤wmicfindfindstrmore)的输出,将其转换为单字节字符串流,以便稍后单字节字符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