从 java 代码运行批处理文件代码

我想从 java 按钮单击执行批处理文件代码。此外,我不希望从 Java 代码中显示任何命令提示符窗口。


我有一个代码:-


C:\xyz-3.1.1\bin>dita --input=C:/Users/india/Desktop/mobile-phone/m

obilePhone.xyz --format=pdf --output=C:/Users/india/Desktop --logfile=C:/Use

rs/india/Desktop/dofhdif.txt

所以我希望上面的代码从批处理命令运行, C:\xyz-3.1.1\bin>作为父目录。


另外,每当我从 JFileChooser 中选择新文件时,我都想更新--input文件路径。


我从按钮单击转换的 java 代码中做到了这一点:-


ProcessBuilder pb=new ProcessBuilder("dita --input=C:/Users/india/Desktop/mobile-phone/mobilePhone.xyz --format=pdf --output=C:/Users/india/Desktop --logfile=C:/Users/india/Desktop/dofhdif.txt");

pb.redirectErrorStream(true);

Process process=pb.start();

并收到 IOException 错误。


我在这里卡了很长时间,我哪里出错了。


编辑:-错误


java.io.IOException: Cannot run program "dita --input=C:/Users/india/Desktop/mobile-phone/m

obilePhone.xyz --format=pdf --output=C:/Users/india/Desktop --logfile=C:/Use

rs/india/Desktop/dofhdif.txt": CreateProcess error=2, The system cannot find the file specified

    at java.lang.ProcessBuilder.start(Unknown Source)


倚天杖
浏览 127回答 2
2回答

繁花如伊

试试这个:String inputFile = ...;String outputFile = ...;String logFile = ...;ProcessBuilder pb = new ProcessBuilder(        "dita",        "--input=" + inputFile,        "--format=pdf",        "--output=" + outputFile,        "--logfile=" + logFile)    .directory(new File("C:\\xyz-3.1.1\\bin"))    //.inheritIO();    .redirectErrorStream(true);Process process = pb.start();这说明以下几点:命令与参数分开参数值可以在运行时确定命令的默认目录 ( C:\xyz-3.1.1\bin) 在启动进程之前设置如果您希望进程的输出显示为 Java 应用程序输出的一部分,请考虑使用inheritIO()代替redirectErrorStream()。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java