【问题标题】:Parse executable console output in batch file在批处理文件中解析可执行控制台输出
【发布时间】:2018-08-19 15:03:05
【问题描述】:

所以我运行这个命令来查找运行我的 JAR 的 java 进程。

wmic.exe process where "name like '%java%'" get processid,commandline | find "myjar.jar"

上述命令的控制台输出如下所示:

javaw  -jar "\myjar.jar"  1932

如何解析这个输出,以便我可以使用进程 id 1932 来杀死它:

TASKKILL /PID 1932

【问题讨论】:

  • 试试wmic process where "name like '%java%' and CommandLine like '%myjar.jar%'" get processid 解析输出会容易得多。不需要find。如果在批处理文件中使用,请不要忘记将百分号加倍。

标签: java windows parsing batch-file pid


【解决方案1】:

你应该不需要PID,或者使用TaskKillWMIC可以直接为你做。

从命令行:

WMIC Process Where "CommandLine Like '%myjar.jar%'" Call Terminate >Nul 2>&1

从批处理文件中,您需要将百分比字符加倍:

@WMIC Process Where "CommandLine Like '%%myjar.jar%%'" Call Terminate >Nul 2>&1

【讨论】:

    【解决方案2】:

    这可能是非常原始的实现,但它会为您获取进程号。 试试下面的代码:

    String output = "javaw  -jar \"\\myjar.jar\"  1932";
    String[] res = output.split("\\s");
    System.out.println(res[res.length-1]);
    

    打印出来的结果是“1932”。

    我假设您知道如何从 Java 运行的控制台应用程序中获取输出。如果没有,我也可以提供帮助。

    【讨论】:

    • 这对于batch 文件无效。也许是有效的 Java,但这里没有问。
    • 我明白了,我以为这是关于 Java 代码的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    相关资源
    最近更新 更多