【问题标题】:Batch issue with wmic and drive serial numberwmic 和驱动器序列号的批处理问题
【发布时间】:2024-01-23 17:19:01
【问题描述】:

一整天都没有结果,需要从批处理文件中为我的硬盘驱动器序列设置一个变量。当我从批处理 "wmic path win32_physicalmedia get SerialNumber /format:csv" 运行此命令时,结果如下:

Node,SerialNumber
WORK-PC, S1DHNSAF323341Z
WORK-PC,

只需要串口打印出“S1DHNSAF323341Z”然后我把它放在一个带有wmic的For语句中,如下所示,但没有输出.. 请帮忙,谢谢你的帮助..比尔

For /F "skip=2 tokens=2 delims=," %%A in ('WMIC Path Win32_physicalmedia Get SerialNumber /FORMAT:csv') Do Set HDSerial=%%A 
echo. %HDSerial%

【问题讨论】:

    标签: windows for-loop batch-file cmd wmic


    【解决方案1】:

    试试这个:

    @echo off
    setlocal
    For /F "tokens=2 delims==" %%A in ('WMIC Path Win32_physicalmedia Get SerialNumber /value^|find "="') do (
     for %%B in (%%A) do (echo %%B)
    )
    

    【讨论】:

    • +1,解释:FOR /F 与 WMIC unicode 输出的奇怪交互导致在每行末尾额外的不需要的回车,从而导致解析问题。额外的 FOR 循环去掉了不需要的回车。 注意: 不需要 FIND 的管道。无论如何,没有第二个标记的行将被第一个 FOR /F 循环删除。
    • 非常感谢 Matt!.. 工作完美,正在添加 Find 或 Findstr 但这将完成工作,如果我想添加 Do Set HDSerial=%%B 我将如何添加那个?
    • 搞定了,感谢 Dave 找到不需要的管道。
    • 要将其标记为已解决,您可以单击问题旁边箭头下方的绿色对勾:)
    最近更新 更多