这是我正在尝试运行的命令。我想获取SQL Server 2008实例的服务名称
FOR / F“delims ==”%% G IN('wmic service where(displayname like ^“%% sqlserver2008 %% ^”)')DO echo %% G
答案 0 :(得分:2)
首先,你需要获得正确的WMIC命令,然后你需要让它在FOR命令中工作。
您正在寻找的基本WMIC命令是:
wmic service where "displayName like '%%sqlserver2008%%'" get name
现在FOR / F有一些并发症。 WMIC输出是unicode,它与FOR / F有一个奇怪的交互 - 不知何故,FOR / F解析的每一行都包含一个额外的回车。每次FOR / F迭代都包含不需要的回车。哎呀:(
一种有效的解决方案是请求CSV格式,在您感兴趣的列之外至少有一个额外的不需要的列。然后您可以设置DELIMS和TOKENS以获得所需的列。在您的情况下,State列出现在Name之后,因此它是一个很好的候选者。
WMIC / CSV格式在前面包含一个额外的节点列。
WMIC / CSV格式在顶部包含空行和标题行,可以使用SKIP = 2跳过。
这是一个功能齐全的FOR / F解决方案。
for /f "skip=2 tokens=2 delims=," %%A in (
'wmic service where "displayName like '%%sqlserver2008%%'" get name^,state /format:csv'
) do echo %%A