在批处理文件中解析可执行控制台输出
Parse executable console output in batch file
所以我 运行 使用此命令来查找 java 进程,这就是 运行 我的 JAR。
wmic.exe process where "name like '%java%'" get processid,commandline | find "myjar.jar"
上述命令的控制台输出如下所示:
javaw -jar "\myjar.jar" 1932
我如何解析这个输出,以便我可以使用进程 ID 1932 来杀死它:
TASKKILL /PID 1932
这可能是非常原始的实现,但它会为您获取进程号。
试试下面的代码:
String output = "javaw -jar \"\myjar.jar\" 1932";
String[] res = output.split("\s");
System.out.println(res[res.length-1]);
打印出来的结果就是“1932”。
我假设您知道如何从控制台应用程序 运行 到 Java 获取输出。如果没有,我也可以提供帮助。
你应该不需要得到PID
,或者使用TaskKill
,WMIC
可以直接为你做。
从命令行:
WMIC Process Where "CommandLine Like '%myjar.jar%'" Call Terminate >Nul 2>&1
您需要从批处理文件中将百分比字符加倍:
@WMIC Process Where "CommandLine Like '%%myjar.jar%%'" Call Terminate >Nul 2>&1
所以我 运行 使用此命令来查找 java 进程,这就是 运行 我的 JAR。
wmic.exe process where "name like '%java%'" get processid,commandline | find "myjar.jar"
上述命令的控制台输出如下所示:
javaw -jar "\myjar.jar" 1932
我如何解析这个输出,以便我可以使用进程 ID 1932 来杀死它:
TASKKILL /PID 1932
这可能是非常原始的实现,但它会为您获取进程号。 试试下面的代码:
String output = "javaw -jar \"\myjar.jar\" 1932";
String[] res = output.split("\s");
System.out.println(res[res.length-1]);
打印出来的结果就是“1932”。
我假设您知道如何从控制台应用程序 运行 到 Java 获取输出。如果没有,我也可以提供帮助。
你应该不需要得到PID
,或者使用TaskKill
,WMIC
可以直接为你做。
从命令行:
WMIC Process Where "CommandLine Like '%myjar.jar%'" Call Terminate >Nul 2>&1
您需要从批处理文件中将百分比字符加倍:
@WMIC Process Where "CommandLine Like '%%myjar.jar%%'" Call Terminate >Nul 2>&1