Командная строка Windows для получения размера физического диска в ГБ

Я хочу, чтобы отобразить все прикрепленные diskdrive модель, имя, индекс и размер в командной строке
Я использую ниже простой код

    wmic diskdrive GET index,caption,name,size /format:table

выход

Caption                   Index  Name                Size
SAMSUNG SSD PM830 2.5" 7  0      .PHYSICALDRIVE0  256052966400
Seagate backup plus       1      .PHYSICALDRIVE1  536870912000

Я хочу тот же вывод, что и выше, за исключением того, что я хотел бы, чтобы размер отображался в ГБ

Я думаю, что есть какой-то способ сделать это, используя для петель и временных файлов vb.

Я специально ищу Windows cmd код. Кто-нибудь может помочь?

Я могу сделать преобразование размера и отображать его на cmd

    for /f "tokens=1,2" %a in ('WMIC DISKDRIVE GET Name^,Size ^|FINDSTR /I /V "Name"') do @echo wsh.echo "%a" ^& " size=" ^& FormatNumber^(cdbl^(%b^)/1024/1024/1024, 2^)^& " GiB" > %temp%tmp.vbs & @if not "%b"=="" @echo( & @cscript //nologo %temp%tmp.vbs & del %temp%tmp.vbs

выход

.PHYSICALDRIVE0 Size=238.47 (GB)

но я все еще не могу правильно отобразить название модели.. Я просто не могу заставить мой цикл for работать по назначению (в моем случае имя модели имеет пробелы между приведенными ниже работами кода, чтобы просто напечатать модели.

    for /f "tokens=1-5 skip=1" %a in ('wmic diskdrive GET model') do @echo. %a %b %c %d %e

выход

SAMSUNG SSD PM830 2.5" 7

может кто-нибудь помочь мне в объединении обоих кодов таким образом, что он отображает как

SAMSUNG SSD PM830 2.5" 7  .PHYSICALDRIVE0  Size=238.47 (GB)
29
задан LadyDextrous
13.04.2023 0:23 Количество просмотров материала 2878
Распечатать страницу

1 ответ

вычисления в cmd с set / A ограничены 32-битными числами со знаком, поэтому вам нужен vbscript или PowerShell для выполнения математики. Вместо использования batch, wmic и vbscript у меня здесь гибридный файл batch / vbscript, который устраняет необходимость создавать временные файлы. Недостатком является Эхо rem &, который требуется, чтобы обе версии скрипта приняли файл.

Сохранить как .УМК./bat файл

rem^ &@cls&cscript //nologo //e:vbscript "%~f0"&Pause&exit /b
On Error Resume Next
sComputer = "."
Set oWMI = GetObject("winmgmts:\" & sComputer & "\root\cimv2")
Set cItems = oWMI.ExecQuery("Select * from Win32_DiskDrive",,48)
sOut = ""
For Each oItem in cItems
  sOut = sOut & JL(26,oItem.Model) & JL(20,oItem.Name) & "Size=" & _
  JR(8,FormatNumber(cdbl(oItem.Size)/1024/1024/1024, 2)) & " (GiB)" &vbCRLF
Next
Set cItems = Nothing

wscript.echo sOut

Function JL(Places, Value) ' Justify Left within Places
  If len (Value) < Places then
    JL=Left(Value & Space(Places), Places)
  Else
    JL=Value
   End If
end Function 
Function JR(Places, Value) ' Justify Right within Places
  If Len (Value) < Places then
    JR = Right(Space(Places) & Value, Places)
  Else
    JR=Value
   End If
end Function 

вывод в моей системе (немецкий язык)

Hitachi HDS722020ALA330   \.\PHYSICALDRIVE2  Size=1.863,01 (GiB)
VB0250EAVER               \.\PHYSICALDRIVE0  Size=  232,88 (GiB)
ST2000DL003-9VT166        \.\PHYSICALDRIVE1  Size=1.863,01 (GiB)

Drücken Sie eine beliebige Taste . . .
0
отвечен LotPings 2023-04-14 08:11

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх