如何从java运行批处理文件?

时间:2009-09-28 07:07:09

标签: java batch-file

我正在尝试从我的java代码运行批处理文件,但不幸的是我不能 正确地运行它。实际上批处理文件正在运行,但只是批处理文件的第一行 正在运行,所以请给出解决方案,这里是代码和批处理文件。

 class bata
{
public static void main(String [] args)
{
try
{
 Runtime.getRuntime().exec("start_james.bat");


  }
  catch(Exception e) {}
}
}

,批处理文件是

cd\
c:
cd C:\Tomcat 5.5\webapps\mail_testing\james-2.3.2\bin
run.bat

start

6 个答案:

答案 0 :(得分:1)

您期望cd:做什么?这对我来说不合适......

如果批处理文件只运行另一个批处理文件,为什么不运行该目标批处理文件?如果您担心初始工作目录,请使用带有File参数的重载来说明要使用的目录。例如:

File dir = new File("C:\\Tomcat 5.5\\webapps\\mail_testing\\james-2.3.2\\bin");
Runtime.getRuntime().exec("start_james.bat", null, dir);

答案 1 :(得分:1)

如果所有其他答案(使用有效的批处理文件)不起作用,请尝试直接执行cmd.exe,如下所示:

File dir = new File("D:\\tools\\bin");
Runtime.getRuntime().exec("c:\\windows\\system32\\cmd.exe /c start_james.bat", null, dir);

您还可以使用%SystemRoot%环境变量来获取cmd.exe的绝对路径。

答案 2 :(得分:0)

java中是否存在某些内容,您可以使用完整路径直接调用批处理文件?

我的意思是,你为什么需要更改目录? 另外,cd:有什么用?它不是DOS中的有效命令,除非您使用* nix。

答案 3 :(得分:0)

我认为他想要更改为目录然后运行批处理文件。你能试试吗?

cd /d C:\Tomcat 5.5\webapps\mail_testing\james-2.3.2\bin
run.bat

start

答案 4 :(得分:0)

“cd:”应该是你可以使用GOTO命令跳转的标签吗?但是,使用“:labelname”声明标签。这应该是您的批处理执行在第一行之后停止的原因。

答案 5 :(得分:0)

这就像一个魅力:

 Runtime run = Runtime.getRuntime();
    try
    {
    System.out.println("Start Running the batch file");
    Process p = run.exec(new String[]{"cmd.exe","/c", "start", "C:/Users/sony/Documents/NetBeansProjects/CodeReview/src/codereview/install.bat",i,j,m,l});
    System.out.println("Completed");
    }
    catch (Exception e)
    {
    } 

这里i,j,k,l是传递给批处理文件的参数