是否可以阻止在批处理文件中运行java应用程序的2个实例?

是否可以阻止在批处理文件中运行java应用程序的2个实例?,java,batch-file,Java,Batch File,由于task scheduler似乎并没有阻止我运行2个实例,我已经启用了“不启动新实例”假设您实际上要求的是批处理解决方案,而不是Java解决方案,如果您从批处理启动Java程序,那么您可以执行类似操作 tasklist /nh /fi "imagename eq java.exe" | find /i "java.exe" >nul && ( echo Java already running, not going to run again ) || ( echo Ja

由于task scheduler似乎并没有阻止我运行2个实例,我已经启用了“不启动新实例”

假设您实际上要求的是批处理解决方案,而不是Java解决方案,如果您从批处理启动Java程序,那么您可以执行类似操作

tasklist /nh /fi "imagename eq java.exe" | find /i "java.exe" >nul && (
echo Java already running, not going to run again
) || (
echo Java not running, so run it
java.exe whatever
)
显然,您必须用实际的命令替换
java.exe


如果这不是您想要的,请添加更具体的信息/要求。

已经搜索过,但不知道如何实现它,是否有任何方法可以阻止我的另一个java应用程序实例在批处理文件中执行时运行?@nlsbshtr我不认为这是OP想要的。。。他询问批处理文件是否能够在应用程序已经运行的情况下不运行该应用程序。不是java编码问题。如果要在批处理文件中执行锁定,它运行在哪个操作系统上?不是批处理文件解决方案,而是启动4J(java的EXE包装器)具有此功能。@nlsbshtr似乎有些过分——应用程序只需检查进程状态,查看同一程序集的其他应用程序是否正在运行,如果正在运行,则退出。这是有风险的,因为如果系统上有任何其他Java进程在运行,则可能会阻止应用程序运行,不仅仅是你的Java进程。@nlsbshtr我不确定,我对Java的进程tbh了解不够,我只是想看看这是否符合OP的要求。@JohnnyO是的,我明白你的意思,我想你可以通过ID来完成,但这会给批处理带来麻烦。如果他们能提供更多的细节,我会先看看OP的想法。