1

Windowsで次のコマンドを実行しようとしています(購入した製品の一部として提供されています):

start /wait setup /z"/sfC:\temp\input_file.txt" /s /f2"C:\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 /f2"C:\temp\newlogfile.log" error=2 at java.lang.ProcessImpl.create(Native Method) at java.lang.ProcessImpl.<init>(ProcessImpl.java:108) at java.lang.ProcessImpl.start(ProcessImpl.java:56) at java.lang.ProcessBuilder.start(ProcessBuilder.java:466) at java.lang.Runtime.exec(Runtime.java:607) at java.lang.Runtime.exec(Runtime.java:480) at SilentAgent.fireCommand(SilentAgent.java:316) at mainClass.main(mainClass.java:15)

4

3 に答える 3

1

これを試してください:

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

于 2012-05-29T14:04:07.073 に答える
0

このようにしてください: -

Runtime.getRuntime().exec(new String[] {
    "start ",
    "/wait ",
    "setup ",
    "/z\"/sfC:/temp/input_file.txt\" ",
    "/s ",
    "/f2\"C:/temp/newlogfile.log\""});
于 2012-05-29T13:46:33.507 に答える
-1

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();
}
于 2012-05-29T13:49:02.497 に答える