java - 在 Windows 机器上使用 java 运行时类触发命令

标签 java windows runtime.exec

我正在尝试在 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)

最佳答案

试试这个:

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 内部使用的内部命令。

关于java - 在 Windows 机器上使用 java 运行时类触发命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10800226/

相关文章:

python - 身份证号码生成器

windows - Windows 版 Safari 和 Mac 版 Safari 之间的区别

c++ - Visual Studio 2008,检测内存泄漏, undefined symbol '__FILE__'

java - 操作系统命令注入(inject)安全威胁

Javaw 在启动外部应用程序时未终止

java - Runtime.getRuntime().exec(String[]) 安全

java - hibernate 应用程序是域驱动的吗?

java - 如果是 @Transactional,则删除方法不会影响数据库

java - 从字符串中提取浮点值

java - 从类对象实例化类