2015-02-13 4 views
0

Я хочу получить информацию об ОЗУ и вывести его в текстовый файл. У меня есть эта команда:Формат вывода CMD в одну строку

wmic memorychip get Serialnumber, Capacity > memory.txt 

Выход имеет формат:

SerialNumber Capacity 
B1246960  1073741824 
643A1552  2147483648 

Но я хочу выход быть один вкладыш. Что-то вроде этого:

643A1552,643A1552 1073741824,2147483648 

Как получить выход на одну линию?

+0

Вы хотите попробовать что-выходной требование снова? – Magoo

+0

Какой выход-требование? @Magoo – user352156

+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

EDIT в комментарии «три колонны»: «заголовок» является плохой выбор здесь, потому что это значение содержит пробел («Физическая память»), так токенизации неправильно. Вместо этого я использовал «скорость» в моем примере (это гораздо более ценная информация).

+0

Все тот же выход. Это не однострочный – user352156

+0

для меня, это так. Как выглядит ваш выход? – Stephan

+0

ах ждать. Вы имеете в виду, что 'memory.txt' все тот же? Я не изменил его. Вы можете добавить '> memory.txt' в последнюю' echo'line, чтобы или поместить его в однострочный. – Stephan

0

Вот один способ, которым Вы могли бы сделать «один-линии» выход подобного в 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)