【问题标题】:Executing Batch file from java and open the cmd of running batch file从java执行批处理文件并打开运行批处理文件的cmd
【发布时间】:2014-09-08 18:14:30
【问题描述】:

我试图从 java 执行批处理文件。我的要求是当java执行批处理文件时,命令窗口应该打开。目前什么都没有发生。

我的代码是:

String[] batchArg = {"cmd", "/k", "cd /d C:\\<path to batch file> & <batchfilename>.bat",a[1],arr[2]};
Runtime.getRuntime().exec(batchArg);

也试试这个:

 String[] batchArg = {"cmd","C:\\<path to batch file> & <batchfilename>.bat",a[1],arr[2]};
Runtime.getRuntime().exec(batchArg);

我也试过 /C

如果我使用此命令从开始菜单或双击运行批处理文件,它会正确执行。

请告诉我,

提前致谢

【问题讨论】:

  • 什么是aarr 是什么?你的批处理文件的内容是什么?有没有可能你的批处理文件太简单了,运行速度很快而你错过了?
  • a 是我传递的参数

标签: java batch-file cmd exec


【解决方案1】:

不能单独执行批处理文件。他们需要一个应用程序来运行它们。在您的情况下,该应用程序是cmd.exe。当您通过单击运行批处理时,Windows 资源管理器会处理此问题。 Java 没有这种奢侈。

Runtime.getRuntime().exec("cmd /c start HelloWorld.bat"); // *

任何阅读本文的人都会熟悉的另一个类似命令是:

java HelloWorld.java

注意您必须如何指定要使用哪个应用程序来运行此文件?仅输入文件名HelloWorld.java 本身并没有太大的作用。

*/c 开关将输出置于一个新窗口中,该窗口在批处理文件完成时终止。

【讨论】:

    【解决方案2】:

    尝试将 waitFor() 添加到您的代码中。

    Process p = Runtime.getRuntime().exec("cmd /C e:/Users/Bryan/touchafile.bat");
    p.waitFor();
    

    此外,您可能会发现查看流程的输出很有用。

    InputStream error = p.getErrorStream();
    InputStream output = p.getInputStream();
    System.out.println(IOUtils.toString(error));
    System.out.println(IOUtils.toString(output));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-05
      • 2012-12-18
      • 2013-12-31
      • 1970-01-01
      • 2017-03-07
      相关资源
      最近更新 更多