【问题标题】:Close CMD window when command executes - Java命令执行时关闭 CMD 窗口 - Java
【发布时间】:2018-03-01 07:11:24
【问题描述】:

我正在使用 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 窗口?

【问题讨论】:

  • 您是否尝试在您的命令之后链接exit?像这样的东西:Process p = Runtime.getRuntime().exec("cmd /c start /wait C:\\Sikuli\\runIde.cmd -r C:\\Sikuli\\xmlRunner\\runners\\Runner.sikuli --args 5 & exit");
  • 您确定要查看该控制台窗口吗?
  • 如果你不想让它等待,你为什么要指定/wait

标签: java windows cmd sikuli


【解决方案1】:

使用cmd /c start /wait cmd /c C:\\Sikuli\\runIde.cmd -r C:\\Sikuli\\xmlRunner\\runners\\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 代理此调用时,此规则不适用。

【讨论】:

  • 如果我从命令中删除 /wait,即使脚本尚未完成运行,它也会转到“命令完成”行。
  • 试试"cmd /c start /wait cmd /c C:\\Sikuli\\runIde.cmd -r C:\\Sikuli\\xmlRunner\\runners\\Runner.sikuli --args 5"
  • @stewazy 我调整了答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-02
  • 2013-09-24
  • 1970-01-01
  • 1970-01-01
  • 2016-06-10
  • 1970-01-01
  • 2017-07-04
相关资源
最近更新 更多