繁体   English   中英

如何在Windows上正确调用JAVA中的CMD文件?

[英]How to invoke a CMD file in JAVA correctly on windows?

我有以下示例java代码。

    String testEfdDirectoryPath="D:\\test";
    String efdExecutable = "test.cmd";
    File executableFile = new File(testEfdDirectoryPath, efdExecutable);
    ProcessBuilder pb=new ProcessBuilder();
    $$pb.command("cmd.exe","/C",executableFile.toString());$$
    pb.directory(new File(testEfdDirectoryPath));
    Process p=pb.start();
    int code=p.waitFor();
    System.out.print(code);

在test.cmd中,实际上是对另一个java应用程序的调用。 除非我将$$标记的行更改为以下内容以重定向其输出,否则无法启动另一个Java应用程序。

    pb.command("cmd.exe","/C",executableFile.toString(),">output.txt");

你们有什么想法吗? 提前致谢。 :)

您的子进程是否会产生大量输出(超过几千字节)? 如果是这种情况,则需要从该过程中读取该输出。 你应该试试:

  1. 开始这个过程
  2. 关闭进程的stdin ,所以pb.getOutputStream().close()
  3. 重复读取pb.getInputStream()和错误流

这可能在一个线程或多个线程中。 无论如何,您应该将上面的解释作为关键字列表,并尝试搜索您可以信任的示例代码段,最好是从成功执行此类操作的开源应用程序中搜索。

也许http://commons.apache.org/exec/可以帮到你。

Windows无法直接执行脚本; 当您双击.cmd文件时,它实际上在cmd.exe中打开该文件。 所以试试cmd.exe E:\\\\test\\\\test.cmd

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM