gpt4 book ai didi

java - 用批量问题替换程序

转载 作者:行者123 更新时间:2023-12-01 11:42:48 25 4
gpt4 key购买 nike

我想为我的程序创建自动更新程序。
在java部分它看起来像

int pid = Kernel32.INSTANCE.GetCurrentProcessId();                    
String cmd = folder + "update.bat" + " " + currentLoc + " " + updateLoc + " " + Integer.toString(pid);
Runtime.getRuntime().exec(cmd);

该批处理包含

SET "name=GameDrive Logs Viewer.exe"
SET "myname=update.bat"
TASKKILL /pid %3
TASKKILL /pid %3
DEL "%1\%name%"
MOVE "%2\%name%" "%1"
"%1\%name%"
DEL "%2\%myname%"

所以,我要终止当前程序并将其删除。
然后我将新版本移动到旧文件夹,运行新版本,然后删除bat文件。
当我从 cmd 调用它并发送参数时,这个 bat 文件完美地工作。
但是当我尝试从 java 程序使用它时什么也没有发生。
我发现,从当前程序创建的所有对话框窗口都具有相同的 processID。 (我用另一只 bat 测试了它)。
所以,我的猜测是从我的java程序调用的批处理获得相同的processID并杀死自己。
我对吗?如果是的话-我该怎么做?

最佳答案

我想您需要在另一个 cmd 实例中启动 update.bat ,如下所示(根据需要添加路径)。在 JAVA 中使用 updatecall.bat 以及以下内容:

使用CMD.exe:Start a new CMD shell and (optionally) run a command/executable program .

cmd /C ""update.bat" %*"

或使用START:Start a program, command or batch script (opens in a new window.)

start "" "update.bat" %* 

如果启动批处理文件,则命令处理器将使用 /K 开关运行到 cmd.exe。这意味着该窗口在批处理运行后往往会保留。要自动关闭它,请将 EXIT 命令添加到启动批处理的末尾。

我确信有一个更智能的解决方案,无需任何辅助批处理......

关于java - 用批量问题替换程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29390852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com