For loop WMIC命令在批处理文件的For循环中不起作用
我有一个批处理文件,我正试图运行,但我不断得到一个错误。我认为这个问题类似于,但dbenham的答案在我的案例中并不完全有效,因为我正在向findstr发送管道。以下是批处理文件的一部分(它挂起的部分): 对于/F%%I in('wmic nic where'Manufacturer!=“Microsoft”且Macaddress不为空'get index^ | findstr/r[0-9]),请执行以下操作( 回声%%I ) 如果您从cmd或批处理文件中自己的行运行wmic命令,它就可以正常工作,但我无法让它在for循环中运行。有人能帮我吗 谢谢, 约翰这样试试:For loop WMIC命令在批处理文件的For循环中不起作用,for-loop,batch-file,wmi,wmi-query,wmic,For Loop,Batch File,Wmi,Wmi Query,Wmic,我有一个批处理文件,我正试图运行,但我不断得到一个错误。我认为这个问题类似于,但dbenham的答案在我的案例中并不完全有效,因为我正在向findstr发送管道。以下是批处理文件的一部分(它挂起的部分): 对于/F%%I in('wmic nic where'Manufacturer!=“Microsoft”且Macaddress不为空'get index^ | findstr/r[0-9]),请执行以下操作( 回声%%I ) 如果您从cmd或批处理文件中自己的行运行wmic命令,它就可以正常工
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
你必须在引号嵌套的地方对引号进行反斜杠转义。尝试以下方法:
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
您必须在引号嵌套的地方对引号进行反斜杠转义。WMIC中有一个功能,它有时会等待用户输入 如果你更换
wmic
在您的示例中,使用
echo. ^| wmic
它将允许命令完成WMIC中有一项功能,它有时会等待用户输入 如果你更换
wmic
在您的示例中,使用
echo. ^| wmic
它将允许命令完成感谢您的快速响应!这似乎奏效了。使用列表格式和您设置的delim是否比管道到findstr更好?另外,你能告诉我2>空值是什么吗?我以前见过,但对此一无所知。是的,运行单个命令比通过
findstr
管道输出效率更高。2>NUL
将stderr重定向到黑洞。我之所以说这纯粹是化妆wmic
经常无正当理由地向stderr打印空行。将stderr重定向到虚无隐藏了那些无用的换行符。重定向是不必要的,但对于我来说,在使用wmic
时包含重定向只是一种习惯。无论如何,请参阅以了解更多信息。感谢您的快速响应!这似乎奏效了。使用列表格式和您设置的delim是否比管道到findstr更好?另外,你能告诉我2>空值是什么吗?我以前见过,但对此一无所知。是的,运行单个命令比通过findstr
管道输出效率更高。2>NUL
将stderr重定向到黑洞。我之所以说这纯粹是化妆wmic
经常无正当理由地向stderr打印空行。将stderr重定向到虚无隐藏了那些无用的换行符。重定向是不必要的,但对于我来说,在使用wmic
时包含重定向只是一种习惯。无论如何,请参阅以了解更多信息。