在windows计算机上使用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

我正在尝试对作为我们购买的产品的一部分提供的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";
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安装程序。