繁体   English   中英

WMIC命令的变量输出

[英]Output of WMIC command in variable

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

我究竟做错了什么?

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

您的代码有误:

  • 没有将/F开关与for循环一起使用
  • 用过的单引号和双引号混合在一起。
  • 没有指定要与get子句一起获取的特定属性
  • 没有使用findstr过滤多余的输出

难道不是“ ('wmic service where 'name like 'Steam Client%%'")的最后一个括号不是“”吗? 无论如何,我从来没有尝试过使用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查询的任何帮助, 可能会有所帮助

希望这可以帮助。

这就是我要做的。

第二个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设备,因此上面的代码未经测试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM