执行命令时关闭CMD窗口-Java

执行命令时关闭CMD窗口-Java,java,windows,cmd,sikuli,Java,Windows,Cmd,Sikuli,我正在使用Sikuli执行自动化测试,我正在编写一个用于运行测试的小型java应用程序。我搜索了其他答案,但大多数答案都与从java运行批处理脚本有关,我需要从java运行整个命令。我有以下命令从cmd运行Sikuli: Process p = Runtime.getRuntime().exec("cmd /c start /wait C:\\Sikuli\\runIde.cmd -r C:\\Sikuli\\xmlRunner\\runners\\Runner.sikuli --args 5"

我正在使用Sikuli执行自动化测试,我正在编写一个用于运行测试的小型java应用程序。我搜索了其他答案,但大多数答案都与从java运行批处理脚本有关,我需要从java运行整个命令。我有以下命令从cmd运行Sikuli:

Process p = Runtime.getRuntime().exec("cmd /c start /wait C:\\Sikuli\\runIde.cmd -r C:\\Sikuli\\xmlRunner\\runners\\Runner.sikuli --args 5");
System.out.println("Waiting for command to be executed");
p.waitFor();
System.out.println("Command finished");

这将启动一个新的cmd窗口并开始执行我的脚本,但当脚本完成时,它不会关闭cmd窗口。脚本运行完毕后,是否有办法自动关闭cmd窗口?

使用
cmd/c start/wait cmd/c:\\Sikuli\\runIde.cmd-r c:\\Sikuli\\xmlRunner\\Runner\\Runner.Sikuli--args 5

见码头:

WAIT        Start application and wait for it to terminate.
command/program
            If it is an internal cmd command or a batch file then
            the command processor is run with the /K switch to cmd.exe.
            This means that the window will remain after the command
            has been run.

            If it is not an internal cmd command or batch file then
            it is a program and will run as either a windowed application
            or a console application.

当您直接调用
runIde.cmd
时,会应用
/K
开关,但当您使用
cmd.exe
代理此调用时,此规则不适用。

可能重复您的命令后是否尝试连锁
退出
?类似这样的内容:
processp=Runtime.getRuntime().exec(“cmd/c start/wait c:\\Sikuli\\runIde.cmd-rc:\\Sikuli\\xmlRunner\\runners\\Runner.Sikuli--args 5&exit”)
是否确实要查看该控制台窗口?如果不希望它等待,为什么要指定
/wait
?如果我从命令中删除/wait,即使脚本尚未完成运行,它也会转到“command finished”行。请尝试
“cmd/c start/wait cmd/c:\\Sikuli\\runIde.cmd-rc:\\Sikuli\\xmlRunner\\runners\\Runner.Sikuli--args 5”
@stewazy我调整了答案。