[英]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.