我想在命令行中显示所有连接的磁盘驱动器型号、名称、索引和大小我使用以下简单代码
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
我想要与上面相同的输出,只是我希望以 GB 显示大小
我认为有一些方法可以使用 for 循环和临时 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)
答案1
在 cmd 中使用 set /A 进行的计算仅限于有符号的 32 位数字,因此您需要 vbscript 或 PowerShell 来进行计算。我没有使用批处理、wmic 和 vbscript,而是使用混合批处理/vbscript 文件,这样就无需创建临时文件。缺点是rem &
需要回显,这样两个脚本版本才能接受该文件。
将其保存为 .cmd/.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 . . .