Вывести командную строку в одну строку - PullRequest
0 голосов
/ 07 июня 2019

Я пытаюсь получить модель и размер всех локальных дисков.
Я хочу вывести по одной строке для каждого диска.
Пример: модель Samsung Размер 500ГБ

@echo off
for /f "tokens=2 delims==" %%d in ('wmic diskdrive get Model,Size /value') do (
    set Model=%%d
set Size=%%d
)
echo Model %Model% Size %Size%
pause

Но ничего.

Ответы [ 2 ]

1 голос
/ 07 июня 2019

Поскольку описания моделей могут содержать пробелы, необходимо отформатировать выходные данные как csv, поэтому выходные данные разделены запятыми (надеюсь, нет описаний моделей, которые содержат запятые - я пока не видел ни одного) .

Без /value каждый диск указан в одной строке (Node,Model,Size), поэтому вам нужно tokens=2,3. Добавьте skip=2 для удаления строки заголовка и добавьте ваши фиксированные строки в окончательный вывод:

for /f "skip=2 tokens=2,3 delims=," %%a in ('"wmic diskdrive get Model,Size /format:csv"') do @echo Model %%a Size %%b
0 голосов
/ 07 июня 2019

Вот один из способов сделать это на всех текущих днях, поддерживаемых Windows-машинами.Заявленная цель - «одна линия».Если вы хотите, чтобы модель и размер были в отдельных переменных, это еще не все.

powershell -NoLogo -NoProfile -Command ^
    "Get-CimInstance -ClassName CIM_DiskDrive |" ^
    "ForEach-Object { 'Model {0} Size {1}' -f @($_.Model, $_.size) }"
...