簡體   English   中英

即使在寫入退出后,命令提示符也不會在完成后關閉

[英]Command prompt is not closing after completing even after writing exit

我有以下 java 代碼

public static void main(String a[]) {
        String location = "C:\\Users\\test\\output\\testProject";
        File dir = new File("C:\\Users\\test\\cmds");
        ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/C", "Start /wait","packageProject.bat",location);
        pb.directory(dir);
        Process p = null;
        try {
            p = pb.start();
            p.waitFor();
        }
        catch (IOException e) {
            e.printStackTrace();
        }
        catch(InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("Folder created");
    }

批處理文件是

cd "C:\Users\test\output\test-master"

mvn clean install -DskipTests

exit

它是打包文件,但不是命令提示符,一旦過程完成,它就不會關閉。

請建議。

您應該刪除包裝器 CMD.EXE 並開始,只需直接調用批處理文件:

String bat = new File(dir, "packageProject.bat").getAbsolutePath();
ProcessBuilder pb = new ProcessBuilder(bat , location);
pb.directory(dir);
Process p = pb.start();
p.waitFor();

如果這個過程產生了大量的 output 如果你不消費錯誤和 output 流,你可能會遇到第二個問題。 您可以在后台線程中執行此操作,或者通過在pb.start()之前添加這些調用來簡單地將 stdout/err 發送到文件:

pb.redirectOutput(new File(location, "std.out"));
pb.redirectError(new File(location, "std.err"));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM