Batch file WMIC命令在变量中的输出
我做错了什么?不是Batch file WMIC命令在变量中的输出,batch-file,Batch File,我做错了什么?不是中的最后一个括号('wmic service where'像'Steam Client%%'这样的名称)应该是'not'?在任何情况下,我从未尝试使用wmic服务,只有wmic win32_localtime看起来像这样:FOR/F%%F In('wmic path win32_localtime get dayofweek^ | Findstr[0-6])设置DOW=%F 编辑:我注意到这里有几个地方出了问题,至少在我能理解的部分。如果希望代码的输出由FOR语句计算,则需要/
中的最后一个括号('wmic service where'像'Steam Client%%'这样的名称)
应该是'not'?在任何情况下,我从未尝试使用wmic服务,只有wmic win32_localtime看起来像这样:FOR/F%%F In('wmic path win32_localtime get dayofweek^ | Findstr[0-6])设置DOW=%F
编辑:我注意到这里有几个地方出了问题,至少在我能理解的部分。如果希望代码的输出由FOR语句计算,则需要/F在FOR前面和变量前面。您通常还需要以单引号(')开始和结束包含命令的方括号。类似于:for/f%%f in('wmic服务,名称如“Steam Client%%”)do set service=%%f
回显%Service%
对于WMIC查询的任何帮助可能会有所帮助
希望这有帮助
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%
代码中的错误:
- 未将
开关与for循环一起使用/F
- 混合使用单引号和双引号
- 未使用
子句指定要获取的特定属性get
- 未使用
findstr
- 我就是这样做的
第二个for循环从输出中去除一些有问题的字符,与
FindStr
示例的方式非常相似,只是速度更快。然后,我实现了一个调用
,以去除填充返回的Get
字符串末尾的尾随空格
@Echo关闭
对于/F“Skip=1 Delims=“%%A In(
“‘WMIC服务,其中(名称如‘Steam%%’)获取名称””
)为/F“Delims=“%%B In”(“%%%A”)执行的Do调用:Sub%%B
回显(“%Service%”)
超时-1
后藤:EOF
:Sub
设置“服务=%*”
后藤:EOF
以上代码完全未经测试,因为我使用的是android设备。输出是什么,您的期望是什么?我正在寻找批处理文件以返回我的服务名称,它将询问我是否停止/启动服务。我希望批处理文件找到服务名称并显示在屏幕上。感谢您的快速响应。你注意到这个答案的第一个相关部分了吗?你应该在括号内有命令的地方需要用一个引号(')结束(和开始)。然后是第二部分,我展示了我使用for命令使用命令的过程。如果在语句中使用命令,则在for前面需要/F。这个输出“Steam Client Service”给了我尾随空格。比如“Steam Client Service(spaces)”,更像是:D:D
Steam Client Service