ist MCVE:Warum endet meine Shell-Instanz nicht, wenn sie mit dem Batch-Skript abgeschlossen ist? Hier
/**
* Get your program totally stuck in three simple steps:
*/
public static void main(String[] args) throws Throwable {
/**
* 1. Create a simple batch file.
*/
String batch = "echo Hello world!";
File file = new File("hello_world.bat");
file.createNewFile();
try (PrintWriter out = new PrintWriter(file)) {
out.print(batch);
}
/**
* 2. Execute that batch file
*/
ProcessBuilder pb = new ProcessBuilder("cmd", "/K "+file.getAbsolutePath()+">hello_world_log.txt");
Process p = pb.start();
/**
* 3. Wait for the file like an idiot forever
*/
p.waitFor();
}
Was ich erwarte, ist, dass der cmd.exe
Prozess beendet werden soll, nachdem der letzte Befehl ausgeführt wird. Stattdessen hängt es herum und tut buchstäblich nichts.
Der Inhalt der Protokolldatei ist:
C:\...\testProject>echo Hello world!
Hello world!
Verwenden '/ C' Option anstelle von'/K '. – saka1029
Um dies zu erweitern: Die Option '/ K' fordert ausdrücklich an, dass' cmd.exe' weiter läuft. Es verhält sich genau wie dokumentiert. –