Ele*_*ios 10 syntax for-loop batch-file wmic
当包含在FOR脚本中的命令中时,如何编写WMIC命令?
wmic service where (name="themes" and state="running") get
Run Code Online (Sandbox Code Playgroud)
以下代码不起作用:
For /F %%a in (
'wmic service where ^("name='themes'" and "state='running'"^) get'
) do (
echo %%a
)
Run Code Online (Sandbox Code Playgroud)
npo*_*aka 11
@echo off
For /F "usebackq delims=" %%a in (`wmic service where 'name^="themes" and state^="running"' get`) do (
echo %%a
)
Run Code Online (Sandbox Code Playgroud)
这个适用于我.我使用usebackq选项没有问题'和替代wmic语法 - '而不是括号.
dbe*_*ham 11
又一个选择:)
@echo off
for /f "delims=" %%A in (
'wmic service where "name='themes' and state='running'" get'
) do for /f "delims=" %%B in ("%%A") do echo %%B
Run Code Online (Sandbox Code Playgroud)
复杂WHERE子句必须引用或括号.额外的内部'不会导致FOR/F出现问题.
我添加了一个额外的FOR/F来去除附加到每行末尾的不需要的回车,作为FOR/F将WMIC unicode输出转换为ANSII的工件.如果没有额外的FOR/F,则会有一个额外的行,仅包含一个回车结果ECHO is off..
我想我更喜欢jeb的版本,因为它消除了整个命令中的转义需求,尽管我可能会在WHERE子句中使用单引号.例如:
@echo off
for /f "delims=" %%A in (
'"wmic service where (name='themes' and state='running') get name, pathName"'
) do for /f "delims=" %%B in ("%%A") do echo %%B
Run Code Online (Sandbox Code Playgroud)
使用我的第一个代码示例中的语法需要转义GET子句中的逗号:
@echo off
for /f "delims=" %%A in (
'wmic service where "name='themes' and state='running'" get name^, pathName'
) do for /f "delims=" %%B in ("%%A") do echo %%B
Run Code Online (Sandbox Code Playgroud)
jeb*_*jeb 10
您可以将完整的wmic命令括在单+双引号中,然后您不需要转义任何内容
FOR /F "delims=" %%a in ('"wmic service where (name="themes" and state="running") get"') do (
echo %%a
)
Run Code Online (Sandbox Code Playgroud)