java Runtime这个类的exec方法,我想先切换下目录,然后再执行命令,怎么来写啊,在一个进程中完成
3个回答
展开全部
这么久没人给你回复啊。
Runtime这个类的exec不是有支持指定工作目录的重载方法么
Process exec(String[] cmdarray,
String[] envp,
File dir) 在指定环境和工作目录的独立进程中执行指定的命令和变量。
Process exec(String command, String[] envp, File dir) 在有指定环境和工作目录的独立进程中执行指定的字符串命令。
上面两个方法的dir参数就是目录。
Runtime这个类的exec不是有支持指定工作目录的重载方法么
Process exec(String[] cmdarray,
String[] envp,
File dir) 在指定环境和工作目录的独立进程中执行指定的命令和变量。
Process exec(String command, String[] envp, File dir) 在有指定环境和工作目录的独立进程中执行指定的字符串命令。
上面两个方法的dir参数就是目录。
追问
C:\Documents and Settings\Administrator>mysql -uroot -padmin jaildb5 < C:\Progra
m Files\Apache Software Foundation\Tomcat 6.0\webapps\jail\version\13.sql;
没办法,嘿嘿。
如这样的语句就根本执行不了,我想先切换到version 那个目录下,然后在执行 13.sql文件,你能给写个例子吗,谢谢啊!
追答
你这个问题的关键问题不是执行位置,而是输入流的重定向,即那个<
编写代码的时候,你要注意:不能exec后就没事了。由于命令执行时需要时间的,尤其是还要读文件。这时你如果不主动等待命令结束,会出现一个现象,即Java执行完了退出,连带着启动的命令进程也被终止。
所以,执行命令后紧接着要
Process process = runtime.exec...
process.waitFor();
完整的应该是:
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("e:/Test/Test.bat <e:/Test/test.txt");
process.waitFor();
另外,如果觉得<输入流不方面,可以使用如下形式执行命令:
ProcessBuilder builder = new ProcessBuilder("e:/Test/Test.bat");
builder.redirectInput(new File("e:/Test/test.txt"));
Process process = builder.start();
process.waitFor();
来自:求助得到的回答
2018-01-26
展开全部
Runtime.getRuntime().exec("cmd /c cd c:\\ 。。。");
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
切换目录?cd +你要切换的路径
更多追问追答
追问
为什么:
C:\Documents and Settings\Administrator>mysql -uroot -padmin jaildb5 mysql -uroot -padmin jaildb5 < C:\Progra
m Files\Apache Software Foundation\Tomcat 6.0\webapps\jail\version\13.sql;
求解,万谢!
追答
系统权限问题,如果是Win7的话,访问C盘的目录需要管理员权限
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询