【问题标题】:Get command prompt out on one line在一行上获取命令提示符
【发布时间】:2019-06-07 10:37:01
【问题描述】:

我正在尝试获取所有本地磁盘的型号和大小。
我想为每个磁盘输出一行。
示例:型号三星大小 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

但什么都没有。

【问题讨论】:

  • 只需省略 /Value 即可在每个磁盘上获取一行带有初始标头的信息,但请记住 wmic 输出是 UTF16LE 编码的。

标签: cmd wmi wmic


【解决方案1】:

由于模型描述可能包含空格,您需要将输出格式化为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

【讨论】:

  • 代码工作正常。请将大小字节转换为千兆大小?。
  • 当您遇到问题时,我们会很乐意帮助您编写代码,但请不要要求我们免费为您编写代码。
【解决方案2】:

这是在当前所有受支持的 Windows 机器上执行此操作的一种方法。既定目标是“一条线”。如果您想将模型和大小放在单独的变量中,还有更多工作要做。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    • 2014-12-03
    • 2010-11-30
    • 2017-04-22
    相关资源
    最近更新 更多