我使用:
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/