2011-10-23 200 views
1

我只想在win7中使用java代码运行批处理文件。我可以用代码运行.exe文件,但是你知道它不适用于批处理。哪里有问题?你甚至知道cmd.exe不会以该命令开始。但我可以运行其他的exe文件,我试过一些。代码是这样的(尝试和捕捉是):他们都没有工作!由java运行批处理文件

Runtime.getRuntime().exec("cmd.exe /c demo.bat"); 
Runtime.getRuntime().exec("demo.bat"); 

我试图做的工作,我写了下面的代码。它retuened

 java.lang.IllegalThreadStateException:process has not exited 
     at java.lang.ProcessImpl.exitValue(Native Method) 
     at Test.Asli.main(Asli.java:38) 

这是代码:

  try{ 
       Runtime rt = Runtime.getRuntime(); 
       Process proc= rt.exec("C:\\Windows\\System32\\cmd.exe"); 
       int b = proc.exitValue(); 
       // int exitVal = proc.exitValue(); 
       //System.out.println("Process exitValue: " + exitVal);} 
       } 
       catch (Exception e) { 
       // TODO: handle exception 
        e.printStackTrace(); 
      } 
+1

那真的是你的代码?它无法编译。 – Mat

+0

我确定这不是确切的代码(它有3个),这是如何失败的?一个错误消息,一个例外,....你对'exec执行的'Process'做了什么? '? –

+0

是的,问题出在哪里?你得到了什么?异常?什么是堆栈跟踪? –

回答

5

尝试以下操作:

String[] cmd = {"cmd.exe", "/c", "demo.bat"); 
Runtime.getRuntime().exec(cmd); 

我总是喜欢拆分命令和参数我自己。否则,它是通过分裂空间来完成的,这可能不是你想要的。

+0

即使这样做也没有任何改变。没有错误没有例外没有报警也没有行动!它调试并结束。 什么都没发生 –

1

试试这个:

Runtime.getRuntime().exec("cmd.exe /c start demo.bat"); 
0

使用此:

try { 
Process p = Runtime.getRuntime().exec("C:PATH/TO/FILE/yourbatchfile.bat"); 
} catch(Exception e) { 
    e.printStackTrace(); 
} 

它甚至掩盖恼人的提示窗口(如果你想)