在变量中输出WMIC命令

时间:2017-03-05 07:12:02

标签: batch-file

for %%f in ('wmic service where 'name like 'Steam Client%%'") do set Service=%%f
echo %Service%

我做错了什么?

3 个答案:

答案 0 :(得分:2)

for /F "tokens=*" %%f in ('wmic service where "name like "Steam%%"" get Name ^| findstr /V /R "^$"') do set Service=%%f
echo %SERVICE%

<强>输出

Steam Client Service

代码中的错误:

  • 未使用for {loop
  • /F开关
  • 混合使用单引号和双引号。
  • 未指定要使用get子句
  • 获取的特定属性
  • 未使用findstr
  • 过滤额外输出

答案 1 :(得分:0)

不是('wmic service where 'name like 'Steam Client%%'")中的最后一个括号应该是'not'吗?在任何情况下,我都没有尝试使用wmic服务,只有wmic win32_localtime看起来像这样:FOR /F %%F IN ('wmic path win32_localtime get dayofweek^|Findstr [0-6]') DO SET DOW=%%F

编辑:我注意到你在这里出错了几个地方,至少在我能理解的部分。如果希望通过FOR语句计算代码的输出,则需要/ F前面的FOR和变量之前。您通常还需要使用单引号(')来开始和结束包含命令的括号。像这样:for /f %%f in ('wmic service where name like "Steam Client%%"') do set Service=%%f echo %Service%

有关WMIC查询的任何帮助this可能有帮助

希望这有帮助。

答案 2 :(得分:0)

我就是这样做的。

第二个for循环从输出中删除一些有问题的字符,与FindStr示例的方式非常相似,只是更快。然后我实现了一个Call去除尾部空格,这些空格填充了返回的Get字符串的结尾。

@Echo Off
For /F "Skip=1 Delims=" %%A In (
    '"WMIC Service Where (Name Like 'Steam%%') Get Name"'
) Do For /F "Delims=" %%B In ("%%A") Do Call :Sub %%B
Echo("%Service%"
Timeout -1
GoTo :EOF

:Sub
Set "Service=%*"
GoTo :EOF

以上代码完全未经测试,因为我正在使用Android设备。