如何在java中使用ProcessBuilder调用.bat文件并发送字符串
我需要能够在我的Java项目中实现以下目标- 1) 使用ProcessBuilder类调用.bat文件 2) 使用Process.getOutPutStream()将命令发送到该子进程(.bat应用程序) 我能够完成第一部分,但无法完成第二部分 因此,我们的想法是打开一个bat文件(oddJobTest.bat),它是本地的另一个Java程序,并向该文件发送一些特定的命令。这个java应用程序实际上包含一些开关大小写逻辑,只有当我能够传递特定的字符串/命令时才能触发这些逻辑。 例如: -如果我通过了“bac”,那么就开始交易逻辑 -如果我通过了“eac”,则执行结束事务逻辑如何在java中使用ProcessBuilder调用.bat文件并发送字符串,java,processbuilder,Java,Processbuilder,我需要能够在我的Java项目中实现以下目标- 1) 使用ProcessBuilder类调用.bat文件 2) 使用Process.getOutPutStream()将命令发送到该子进程(.bat应用程序) 我能够完成第一部分,但无法完成第二部分 因此,我们的想法是打开一个bat文件(oddJobTest.bat),它是本地的另一个Java程序,并向该文件发送一些特定的命令。这个java应用程序实际上包含一些开关大小写逻辑,只有当我能够传递特定的字符串/命令时才能触发这些逻辑。 例如: -如果我通
CoreCashMqttClient.connect();
File oddJobTest = new File("C:/spool/oddjob/build/distributions/oddjob-
0.2.1-SNAPSHOT/oddjob-0.2.1-SNAPSHOT/bin");
//Use of"/K" makes sure that the OddJob.bat remains active.
ProcessBuilder pbOddJob = new ProcessBuilder("cmd.exe", "/K",
"Start","oddjobTest.bat");
pbOddJob.directory(oddJobTest);
try {
p = pbOddJob.start();
System.out.println(p.toString());
} catch (IOException e) {
e.printStackTrace();
}
String payload = ""; // pass some data
CoreCashMqttClient.publish(payload);
Thread.sleep(5000);
OutputStreamWriter writer = new OutputStreamWriter(p.getOutputStream());
try {
writer.write("bac");
} catch (IOException e) {
e.printStackTrace();
}
使用下面的代码-我希望作为子进程打开的命令行应该以字符串形式接收“bac”
OutputStreamWriter writer = new OutputStreamWriter(p.getOutputStream());
writer.write("bac");
使用
ProcessBuilder pbOddJob=newprocessbuilder(“oddjobTest.bat”)有什么问题代码>?我收到此错误-java.io.IOException:无法运行程序“oddjobTest.bat”(在目录“C:\spool\oddjob\build\distributions\oddjob-0.2.1-SNAPSHOT\oddjob-0.2.1-SNAPSHOT\bin”中):CreateProcess error=2,系统找不到指定的文件dok,确保将工作目录
设置为与oddjobTest.bat
与工作目录存储在同一位置。您的意思是“pbodjob.directory(oddjobTest)”吗?这里oddJobTest指向oddJobTest.bat文件的存储位置。是的,我会确保该文件存在于所述目录中-不要假设