Cmd 在一行中获取命令提示符

Cmd 在一行中获取命令提示符,cmd,wmi,wmic,Cmd,Wmi,Wmic,我正在尝试获取所有本地磁盘的型号和大小。 我想为每个磁盘输出一行。 示例:三星型号500GB @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 但是什么都没有。这里有一种方法可以在当前所有受支持的Windows机器上实现这一点。

我正在尝试获取所有本地磁盘的型号和大小。 我想为每个磁盘输出一行。 示例:三星型号500GB

@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

但是什么都没有。

这里有一种方法可以在当前所有受支持的Windows机器上实现这一点。声明的目标是一行。如果您希望将模型和大小放在单独的变量中,那么还有很多事情要做

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

由于模型描述可能包含空格,您需要将输出格式化为csv,因此输出由逗号分隔。我希望没有包含逗号的模型描述-到目前为止我还没有看到

如果没有/value,每个磁盘都列在一行节点、型号、大小中,因此需要标记=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

只需省略/Value,就可以在每个磁盘上获得一行初始标头,但请记住wmic输出是UTF16LE编码的。代码工作正常。请将字节大小转换为千兆字节大小?如果您有问题,我们将很乐意帮助您编写代码,但请不要要求我们免费为您编写代码。