当使用Java时,如何保持命令提示符窗口打开?

3
这是我的代码:
import java.io.*;

public class PingTest
{
    public static void main (String [] args) throws IOException, InterruptedException
    {
        Runtime.getRuntime().exec(new String[]
           {"cmd","/k","start","cmd","/c","ping localhost"});
    }
}

它像我想要的那样ping本地主机,但它不能保持打开状态。一旦完成操作,它就立即关闭。我该怎么办才能解决这个问题?

3个回答

5

由于您基本上是在执行

cmd /k start cmd /c ping localhost

它会精确地执行它应该做的事情,运行start命令来运行cmd命令,在/c标记因ping完成后终止。

如果您希望带有ping结果的窗口保持打开状态,您需要执行以下操作:

cmd /k start cmd /k ping localhost

或者

cmd /c start cmd /k ping localhost

(第一个 cmd 上的标志并不重要,因为它不会打开一个新窗口。)

对我有用的是cmd /k start cmd /k ping localhost,但你的建议基本上解决了问题。谢谢! - Samuel Bauer
@AndyThomas-Cramer,实际上我刚刚发现你需要使用cmd才能让start工作。原来start不是一个程序,而是一个命令行命令(就像dircd一样)。 - trutheality

4

一种简单的解决方法是在 main() 函数结束时请求输入。

public static void main (String [] args) throws IOException, InterruptedException
{
    ...

    System.out.println("Press return to continue.");
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    in.readLine();
}

我有点困惑,这个操作是在控制台中进行的,而不是命令提示符。 - Samuel Bauer
你使用的操作系统是什么?命令提示符和控制台在哪里出现,它们有什么区别?例如,你是否使用Windows的“命令提示符”cmd.exe? - Andy Thomas
Windows 7,cmd.exe。命令提示符出现在它自己的窗口中。控制台是我正在使用的编译器(Eclipse)的一部分。 - Samuel Bauer
由于您自己启动了cmd.exe,因此您可以使用选项来保持它处于打开状态:cmd.exe /S /K <command>。不确定为什么您要使用cmd.exe /C,这意味着在运行命令后终止它。 - Andy Thomas

1
你可以使用内置命令pause。为此,您可以扩展您的命令,如下所示:
public static void main (String [] args) throws IOException, InterruptedException
{
    Runtime.getRuntime().exec(new String[]
       {"cmd", "/k", "start", "cmd", "/c", "\"ping localhost & pause\""});
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接