我希望能够运行如下查询:
wmic path Win32_Service where "DisplayName like 'FooBarService % (X, Y)'" get *
但是,由于类似字符串中的逗号,它不起作用。我收到的错误是“动词无效”。我尝试用反斜杠转义它,并尝试使用方括号转义它,因为下划线应该被转义,两者都导致“无效动词”。错误。
作为一种不太理想的解决方法,我可以用下划线替换逗号,它可以工作,但下划线将匹配任何单个字符而不仅仅是逗号,所以我宁愿找到一种方法来转义逗号。
有没有办法像这个例子一样转义逗号?
我发现在其中包含逗号的一种方法like
子句是将整个where
括号内的表达式。不幸的是,我还发现这意味着我不能同时在字符串中包含闭括号(但开括号是可以的)。我尝试过/trace:on
可以选择查看幕后发生的事情,它帮助我找到了该程序接受的一些内容:
这是我使用逗号的示例,但它显然不能包含右括号:
C:\> wmic /trace:on path Win32_Service where (Description like '%(%, %') get DisplayName
这是一个我必须使用左括号和右括号的示例,但显然它不能包含逗号(显然,这与您原来的示例非常相似):
C:\> wmic /trace:on path Win32_Service where "Description like '%(TAPI)%'" get DisplayName
解析器似乎不够复杂,无法处理这些情况,但是通过跟踪,您可以看到它使用的 WMI Win32 函数,因此也许您可以编写自己的程序来直接使用这些函数。我认为IWbemServices::ExecQuery
有能力完成您想做的事情。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)