我想获取有关RAM的信息并将其输出到文本文件中。我有这个命令:
wmic memorychip get Serialnumber, Capacity > memory.txt
输出具有以下格式:
SerialNumber Capacity
B1246960 1073741824
643A1552 2147483648
但我希望输出是一个单行。像这样:
643A1552,643A1552 1073741824,2147483648
如何获得一行输出?
答案 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)