将CMD的输出格式化为一行

时间:2015-02-13 17:42:53

标签: command-line cmd wmic

我想获取有关RAM的信息并将其输出到文本文件中。我有这个命令:

wmic memorychip get Serialnumber, Capacity > memory.txt

输出具有以下格式:

SerialNumber Capacity
B1246960     1073741824   
643A1552     2147483648  

但我希望输出是一个单行。像这样:

643A1552,643A1552   1073741824,2147483648

如何获得一行输出?

2 个答案:

答案 0 :(得分:0)

@echo off

setlocal enabledelayedexpansion
wmic memorychip get Serialnumber, Capacity, Speed > memory.txt

for /f "skip=1 tokens=1,2,3" %%i in ('type memory.txt') do (
  set cp=!cp!,%%i
  set sn=!sn!,%%j
  set sp=!sp!,%%k
)
REM remove first comma:
echo RAM %sn:~1%    %cp:~1%   %sp:~1% >x.txt

注意dbenhams评论:Actually it lists the columns in alphabetical order, regardless of the order you specify them, so Capacity is listed before SerialNumber. – dbenham

编辑评论"三栏":"标题"这里是一个糟糕的选择,因为它的值包含一个空格("物理内存"),因此标记化是错误的。我使用"速度"而是在我的例子中(这是一个更有价值的信息)。

答案 1 :(得分:0)

这是你可以做到的一种方式" one-line"像PowerShell中那样的输出:

$sn = $capacity = ""
get-wmiobject Win32_PhysicalMemory | foreach-object {
  $sn += ",{0}" -f $_.SerialNumber
  $capacity += ",{0}" -f $_.Capacity
}
"{0}   {1}" -f $sn.Substring(1),$capacity.SubString(1)