我试图通过Java执行命令行参数.例如:
// Execute command
String command = "cmd /c start cmd.exe";
Process child = Runtime.getRuntime().exec(command);
// Get output stream to write from it
OutputStream out = child.getOutputStream();
out.write("cd C:/ /r/n".getBytes());
out.flush();
out.write("dir /r/n".getBytes());
out.close();
Run Code Online (Sandbox Code Playgroud)
以上打开命令行但不执行cd或dir.有任何想法吗?我正在运行Windows XP,JRE6.
(我已将我的问题修改为更具体.以下答案有帮助,但不回答我的问题.)
是否可以打开命令提示符(我猜其他系统的任何其他终端),并在新打开的窗口中执行命令?
目前我拥有的是:
Runtime rt = Runtime.getRuntime();
rt.exec(new String[]{"cmd.exe","/c","start"});
Run Code Online (Sandbox Code Playgroud)
我尝试在"开始"之后添加下一个命令,我尝试运行另一个包含我的命令的rt.exec,但我找不到让它工作的方法.
如果重要,我正在尝试运行类似于此的命令:
java -flag -flag -cp terminal-based-program.jar
Run Code Online (Sandbox Code Playgroud)
编辑不幸的是我有一些奇怪的发现.我已经能够成功启动命令提示符并使用以下命令传递命令:
rt.exec("cmd.exe /c start command");
Run Code Online (Sandbox Code Playgroud)
但是,它似乎只能使用一个命令.因为,如果我尝试使用这样的命令分隔符"cmd.exe/c start command&command2",则第二个命令将通过后台传递(如果我刚使用rt.exec("command2")的话;) .现在问题是,我意识到我需要更改运行命令提示符的目录,因为如果我只使用jar文件的完整路径,则jar文件会错误地从命令提示符的活动目录中读取数据,而不是jar的目录,包含其资源.