我正在尝试从 java 应用程序调用 .bat 文件。看起来很简单,但我有两个问题,非常感谢一些建议:
下面的代码无法执行 bat 文件,因为参数字符串超过 94 个字符。如果我正好使用 94 个字符(通过从
clientArgs
字符串末尾删除尾随的“x”),bat 文件执行正常。
(如果我使用替代调用并将 args 传递为同样的问题String[]
)
无论如何,我需要能够传递更长的命令字符串(~150 个字符)如果我修改
clientArgs
为不包括完整的文件名,而只包括短名称(因为我指定了工作目录),我得到:java.io.IOException: Cannot run program "client.bat" (in directory "C:\2\code\FlaFl\flafl-0.7-RC2"): CreateProcess error=2, The system cannot find the file specified
这是代码:
public static void main(String[] args) {
String CMD_FILE_NAME = "client.bat"; //cmd or bat - still limit'n is 94 chars
String cmdFileFolder= "C:/2/code/FlaFl/flafl-0.7-RC2/";
File workingDir = new File(cmdFileFolder);
String clientArgs = cmdFileFolder +
CMD_FILE_NAME + " -host name12.mycompanyname3.com -app hive"
+ "123456789 34x"; //95 chars fails. remove the x to get it to work
System.out.println("length of invoc str is "+clientArgs.length());
Process process=null;
try {
process = Runtime.getRuntime().exec(clientArgs,null,workingDir);
} catch (IOException e) {
System.out.println("exception "+e);
}
//sleep(2000);
//if (process!=null)
// process.destroy();
}