【问题标题】:WMIC Command Not Working in For Loop of Batch FileWMIC 命令在批处理文件的 For 循环中不起作用
【发布时间】:2013-03-20 14:55:35
【问题描述】:

我有一个要运行的批处理文件,但我不断收到错误消息。我认为这个问题类似于I can't get the right syntax to use WMIC in batch file,但 dbenham 的答案在我的情况下并不完全有效,因为我正在寻找 findstr。这是批处理文件的一部分(它挂在上面的部分):

for /F %%I in ('wmic nic where 'Manufacturer!="Microsoft" and Macaddress IS NOT NULL' get index ^| findstr /r [0-9]') 做 ( 回声 %%I )

如果您从 cmd 或它自己的批处理文件行运行 wmic 命令,它就可以正常工作,但我无法让它在 for 循环中运行。有谁能帮帮我吗?

谢谢, 约翰

【问题讨论】:

    标签: for-loop batch-file wmi wmi-query wmic


    【解决方案1】:

    试试这个方法:

    for /f "tokens=2 delims==" %%I in (
        'wmic nic where "manufacturer!=\"Microsoft\" and macaddress is not null" get macaddress /format:list 2^>NUL'
    ) do echo %%I
    

    您必须在嵌套引号的地方用反斜杠转义引用的内容。

    【讨论】:

    • 感谢您的快速回复!这似乎起到了作用。使用列表格式和您设置的分隔符是否比通过管道传输到 findstr 更好?另外,你能告诉我 2>null 是做什么的吗?我以前看过这个,但对此一无所知。
    • 是的,运行单个命令比通过findstr 管道输出更有效。 2>NUL 将 stderr 重定向到黑洞。我提出的原因是纯粹的化妆品。 wmic 经常无缘无故地将空行打印到 stderr。将 stderr 重定向到虚无隐藏了那些无用的换行符。重定向不是必需的,但在使用wmic 时包含它只是我的习惯。无论如何,请参阅Batch Files - Redirection 了解更多信息。
    【解决方案2】:

    WMIC 中有一个功能,它有时会等待用户输入。

    如果你替换

    wmic
    

    在您的示例中,使用

    echo. ^| wmic
    

    它将允许命令完成

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-07
      • 2018-01-09
      • 1970-01-01
      • 2017-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多