如何在windows上正确调用JAVA中的CMD文件?
我有如下示例java代码如何在windows上正确调用JAVA中的CMD文件?,java,process,processbuilder,Java,Process,Processbuilder,我有如下示例java代码 String testEfdDirectoryPath="D:\\test"; String efdExecutable = "test.cmd"; File executableFile = new File(testEfdDirectoryPath, efdExecutable); ProcessBuilder pb=new ProcessBuilder(); $$pb.command("cmd.exe","/C",execu
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");
你们有什么想法吗?提前感谢。:) Windows无法直接执行脚本;双击.cmd文件时,实际上会在cmd.exe中打开该文件。因此,请尝试
cmd.exe E:\\test\\test.cmd
您的子进程是否会产生大量输出(超过几千字节)?如果是这种情况,您需要从流程中读取该输出。你应该试试:
stdin
,因此pb.getOutputStream().close()
pb.getInputStream()
和错误流也许我能帮你。谢谢,罗兰。你是对的。我发现ProcessBuilder的javadoc中说明了这个问题。