在windows计算机上使用java运行时类触发命令
我正在尝试对作为我们购买的产品的一部分提供的Windows启动以下命令: 启动/等待设置/z/sfC:\temp\input_file.txt/s/f2C:\temp\newlogfile.log 现在可悲的是,我无法使用我编写的java程序运行该命令。我必须将它作为其他东西的一部分运行,因此需要通过java运行它 这是我的密码:在windows计算机上使用java运行时类触发命令,java,windows,runtime.exec,Java,Windows,Runtime.exec,我正在尝试对作为我们购买的产品的一部分提供的Windows启动以下命令: 启动/等待设置/z/sfC:\temp\input_file.txt/s/f2C:\temp\newlogfile.log 现在可悲的是,我无法使用我编写的java程序运行该命令。我必须将它作为其他东西的一部分运行,因此需要通过java运行它 这是我的密码: String[] cmd = new String [6]; cmd[0] = "start"; cmd[1] = "/wait"; cmd[2] = "setup
String[] cmd = new String [6];
cmd[0] = "start";
cmd[1] = "/wait";
cmd[2] = "setup";
cmd[3] = "/z\"/sfC:\\temp\\input_file.txt\"";
cmd[4] = "/s";
cmd[5] = "/f2\"C:\\temp\\newlogfile.log\"";
try
{
Runtime.getRuntime().exec(cmd);
}
catch(IOException e)
{
e.printStackTrace();
}
请告诉我我做错了什么。
这是我得到的输出:
java.io.IOException:CreateProcess:start/wait setup/z/sfC:\temp\input_file.txt/s/f2C:\temp\newlogfile.log错误=2
在java.lang.ProcessImpl.createNative方法中
位于java.lang.ProcessImpl.ProcessImpl.java:108
在java.lang.ProcessImpl.startProcessImpl.java:56
位于java.lang.ProcessBuilder.startProcessBuilder.java:466
在java.lang.Runtime.execRuntime.java:607
在java.lang.Runtime.execRuntime.java:480
在SilentAgent.fireCommandSilentAgent.java:316
在mainClass.mainClass.java:15上执行以下操作:-
Runtime.getRuntime().exec(new String[] {
"start ",
"/wait ",
"setup ",
"/z\"/sfC:/temp/input_file.txt\" ",
"/s ",
"/f2\"C:/temp/newlogfile.log\""});
您确定您的java程序位于“开始”程序的同一目录中吗 如果不是,则将命令字符串作为整个字符串传递
try {
String command = "start /wait setup /z\"/sfC:\\temp\\input_file.txt\" /s /f2\"C:\\temp\\newlogfile.log\"";
// The third parameter is the current working directory
Process p = runtime.exec(c, null, new File());
} catch (Exception e) {
e.printStackTrace();
}
试试这个:
String[] cmd = {
"cmd.exe",
"/c",
"start",
"/wait",
"setup",
"/z\"/sfC:\\temp\\input_file.txt\"",
"/s",
"/f2\"C:\\temp\\newlogfile.log\""
};
Runtime.getRuntime().exec(cmd);
原因:start是一个内部命令,只能从cmd shell内部使用。失败是什么意思?你的电脑着火了吗?或者你有例外吗?@thomashrig非常抱歉我没有粘贴例外。不知何故,我忘记了,尽管我知道我必须粘贴它。start不是自定义程序。这是一个标准的Windows命令,适用于所有路径。实际上,它通过在所有地方添加引号来扰乱命令。我尝试了:Runtime.getRuntime.execnew字符串[]{start/wait setup/z\/sfC:\\temp\\SILENT\u AGENT.txt\/s/f2\C:\\temp\\SILENT\u setup.log\};但这也没有帮助;同样的例外。@RitwikG只需尝试一下我发布的内容。它对我有效,并试图打开Windows XP安装程序。