如何在WMIC中使用if语句

时间:2019-04-12 14:17:12

标签: batch-file command-line

这是我的第一篇文章。我正在使用批处理命令根据其命令行参数检查程序实例是否已在运行。我可以使用以下代码查看它是否正在运行:

wmic Path win32_process Where "CommandLine Like '%Account A%' AND Caption Like '%Leads Manager.exe%'"

如果该进程存在,我将获得该进程信息的完整细分,但是如果该进程未在运行,我会得到No Instance(s) Available.

我希望能够运行If语句,因此,如果结果显示No Instance(s) Available.,我想运行一个不显示进程信息的命令,并且如果确实存在,我想回显Account A is already running

希望有更多经验的人可以为我指明正确的方向

1 个答案:

答案 0 :(得分:1)

这是一个的示例,可能会对您有所帮助:

@Echo Off
For %%A In (A B C D) Do WMIC Process Where^
 "Name='Leads Manager.exe' And Not CommandLine Like '%%Account %A%%%'"^
 Get Name 2>Nul|Find "Name">Nul && (
        Start "" "C:\Leads Manager.exe" -- "C:\Account %%A.ini")

此示例使用外部For循环选择“帐户”字母,然后检查Leads Manager.exe是否正在使用包含字符串Account A,{{1}的命令行运行},Account BAccount C,如果没有,则应运行Leads Manager并指定相应帐户的路径。 ((请注意,您的Account D.exe文件路径都包含空格,因此我将其双引号括起来,但是在您在注释中写命令时保留了其余命令。您可能想要考虑在测试之前检查提供的内容是否正确并进行必要的调整,或者用简单的.ini语句完全替换该行,或者运行另一个批处理文件。)