首页 > 解决方案 > 如何在文本文件上格式化批处理命令结果

问题描述

我正在使用下面的批处理脚本检索计算机信息,

(
    systeminfo | findstr /c:"Host Name" /c:"Domain" /c:"OS Name" /c:"OS Version" /c:"System Manufacturer" /c:"System Model" /c:"System type" /c:"Total Physical Memory" /c:"Available Physical Memory" 

    wmic bios get serialnumber

) > "getPCinfo.txt"

然后文本文件上的结果是

Host Name:                 Host
OS Name:                   Microsoft Windows 10 Pro
OS Version:                10.0.16299 N/A Build 16299
System Manufacturer:       Dell Inc.
System Model:              Latitude 7480
BIOS Version:              Dell Inc. 1.7.3, 10/11/2017
Total Physical Memory:     8,077 MB
Available Physical Memory: 2,450 MB
Domain:                    Domain.Domain.Domain.net
S e r i a l N u m b e r     

 3 R K 5 M H 2               

我可以知道如何将序列号格式化为与以前的信息相同的格式,例如:-

S e r i a l N u m b e r :   3 R K 5 M H 2  

标签: batch-file

解决方案


我不喜欢脚本中过长的行 - 你太快失去概述。
此批处理使用 findstr 的默认 RegEx 模式,以行开头的锚点,/B
并用点替换搜索字符串中的空格。

:: Q:\Test\2018\06\22\Get-PCInfo.cmd
@Echo off
FOR /F "tokens=1,2 delims==" %%A IN ('
  wmic bios get serialnumber /value ^|find /I "serialnumber"
') DO For %%C in (%%B) Do Set "BIOS=%%A:              %%C"

Set "Find=Host.Name Domain OS.Name OS.Version System.Manufacturer"
Set "Find=%Find% System.Model System.type Total.Physical.Memory"
Set "Find=%Find% BIOS.Version Available.Physical.Memory"

( systeminfo | findstr /I /B "%Find%"
  Echo=%BIOS%
) >getPCinfo.txt

样本输出:

> type getPCinfo.txt
Host Name:                 HOST
OS Name:                   Microsoft Windows 10 Pro
OS Version:                10.0.16299 N/A Build 16299
System Manufacturer:       System manufacturer
System Model:              System Product Name
System Type:               x64-based PC
BIOS Version:              American Megatrends Inc. 1408   , 09/21/2010
Total Physical Memory:     24.566 MB
Available Physical Memory: 14.753 MB
Domain:                    Doamin
SerialNumber:              Number

推荐阅读