java - 如果命令返回错误,是否可以防止在运行命令后自动关闭 cmd?

标签 java command-line process cmd runtime.exec

我使用:

Process p = Runtime.getRuntime().exec(command);

命令是这样的:

command = new String[]{"cmd.exe", "/c", "start cmd.exe /c " + someCommand}

我知道我可以使用“/k”代替“/c”。但我希望我的窗口仅在“someCommand”返回错误时保持打开状态。否则,如果一切正常,cmd 应该关闭。 如果有任何帮助,我将不胜感激。谢谢!

最佳答案

首先读取 Process ErrorStream 以查看是否有任何错误,然后使用 Scanner 等待用户输入。

public static Process p;
public static boolean error=false;
public static void main(String args[]){
    try{
        String command[] = {"cmd.exe", "/c", "start cmd.exe /c " + someCommand}
        p = Runtime.getRuntime().exec(command);
        Thread tracer = new Thread (new Runnable(){
            public void run(){
                try {
                    InputStream is=p.getErrorStream();
                    BufferedReader br = new BufferedReader (new InputStreamReader (is));
                    while (true) {
                        String s = br.readLine ();
                        if (s == null || s.trim().isEmpty()){
                            break;
                            }
                        System.out.println ("Command error: "+s);
                        error=true;
                    }
                    is.close ();    
                } catch (Exception ex) {
                        ex.printStackTrace ();
                }
            }
        });
        tracer.start ();
        p.waitFor();
        if(error){
            System.out.println("There are some errors. Press <Enter> to finish.");
            Scanner scanIn = new Scanner(System.in);
            scanIn.nextLine();
            scanIn.close();
        }
    }catch(Exception e){
        System.out.println("Error "+e.getMessage());
    }
}

这对我有用。

关于java - 如果命令返回错误,是否可以防止在运行命令后自动关闭 cmd?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17271700/

相关文章:

java:对象1和对象2与对象2和对象1相同

linux - unix 查找字符并将其替换为多个字符的字符串

linux - 替换 zsh 命令行中的字符串

c# - 使用 Foxit Reader 从进程中静默打印打开 GUI

java - Accept-Ranges 是否可以与 GWT 中的 RequestBuilder 一起使用?

java - 使用 ESC/POS 设置字符大小 (Java)

eclipse cdt命令行输入

python - 使用 Python 访问已经运行的进程

javascript - 访问当前正在执行的 "request"或 "thread"就好像它是 Node.js 中的全局变量一样?

java - 如何让FlashDevelop使用32位JRE?