Java如何调用外部命令?
2004-12-20 13:08
585 查看
Java如何调用外部外部命令?
我自己的体会是用Runtime.getRuntime.exec(cmd);
譬如下面这个代码:
String[] cmd = new String[3];
if( osName.equals( "Windows NT" )||osName.equals( "Windows 2000" ))
{
cmd[0] = "cmd.exe" ;
cmd[1] = "/C" ;
}
else if(osName.equals("Linux"))
{
cmd[0]="sh"
cmd[1]=linux下的某个目录
}
else if( osName.equals( "Windows 98" ) )
{
cmd[0] = "command.com" ;
cmd[1] = "/C" ;
}
cmd[2] = "mysqldump --opt -u root yh_tpl > "+backup_path+filename+".sql";
Process ps = Runtime.getRuntime().exec(cmd);
今天看到了别人回复这类问题,有这样一点以前不知道:
java中调用exec完全脱离了java的jvm,因此以后的运行环境需要自己维护。
======================================================================================================
Java调用外部程序的方法
作者:陈刚,桂林人,97年毕业于广西师范大学数学系,暂于IBM中国研究中心兼职从事软件开发(2004.2-?),专注基于java平台的软件开发。
email: glchengang@hotmail.com
blog: glchengang.yeah.net
最近开发报表模块,生成报表文件后(一个Excel文件)要将此文件打。很简单,使用Java调用外部程序的方法即可。代码如下:
String path = "C:/报表_20040504.xls";
try {
//相当于window的"开始"->"运行"的效果
Runtime.getRuntime().exec("cmd /c start " + path);
} catch (IOException e) {
e.printStackTrace();
}
但如果文件的路径中包含有空格上面的方法就会出错。到google狂搜一气,没有,看cmd /?帮助也没有,试了好多次,发现解决办法其实很简单,真是愚昧。代码如下,无须多言。
String path = "C:/Documents and Settings/Giles/桌面/报表_20040504.xls";
try {
Runtime.getRuntime().exec("cmd /c start excel /"" + path + "/"");
} catch (IOException e) {
e.printStackTrace();
}
======================================================================================================
NOTE 1: Reading a BAT file output containing the dir command may hang. I don't know why...
NOTE 2: To make a shortcut : Create a shortcut to CmdExec.class. Go in the shortcut properties and change the target as "java CmdExec". Change the run option to Minimized to hide the black DOS console when the BAT is executed.
NOTE 3 : A useful link on the subject : JavaWorld article, thanks to O. Thomann.
The following example start a Dial-up connection on the Win plateform :
The BAT file contains the DOS call to bring the Dialog. The "MyConnection" is the DUN and it's case sensitive.
You still need to press ENTER to CONNECT, there is an option in the Connection properties to connect automatically.
If you want to wait until the BAT file is finished, use "start /wait".
On NT and W2K, rnaui.dll is not available. Use rasdial.exe instead.
To launch a Unix script
You can include a path for the program to be executed. On the Win plateform, you need to put the path in quotes if the path contains spaces in it.
If you need to pass arguments, it's safer to a String array especially if they contain spaces.
PDF (Windows only)
VBSCRIPT
HTML Help (Windows only)
Any program using the Windows file association mechanism
where "file" is the filename of the data file ex. myresume.doc to start Word if the doc extension is associated with it.
我自己的体会是用Runtime.getRuntime.exec(cmd);
譬如下面这个代码:
String[] cmd = new String[3];
if( osName.equals( "Windows NT" )||osName.equals( "Windows 2000" ))
{
cmd[0] = "cmd.exe" ;
cmd[1] = "/C" ;
}
else if(osName.equals("Linux"))
{
cmd[0]="sh"
cmd[1]=linux下的某个目录
}
else if( osName.equals( "Windows 98" ) )
{
cmd[0] = "command.com" ;
cmd[1] = "/C" ;
}
cmd[2] = "mysqldump --opt -u root yh_tpl > "+backup_path+filename+".sql";
Process ps = Runtime.getRuntime().exec(cmd);
今天看到了别人回复这类问题,有这样一点以前不知道:
java中调用exec完全脱离了java的jvm,因此以后的运行环境需要自己维护。
======================================================================================================
Java调用外部程序的方法
作者:陈刚,桂林人,97年毕业于广西师范大学数学系,暂于IBM中国研究中心兼职从事软件开发(2004.2-?),专注基于java平台的软件开发。
email: glchengang@hotmail.com
blog: glchengang.yeah.net
最近开发报表模块,生成报表文件后(一个Excel文件)要将此文件打。很简单,使用Java调用外部程序的方法即可。代码如下:
String path = "C:/报表_20040504.xls";
try {
//相当于window的"开始"->"运行"的效果
Runtime.getRuntime().exec("cmd /c start " + path);
} catch (IOException e) {
e.printStackTrace();
}
但如果文件的路径中包含有空格上面的方法就会出错。到google狂搜一气,没有,看cmd /?帮助也没有,试了好多次,发现解决办法其实很简单,真是愚昧。代码如下,无须多言。
String path = "C:/Documents and Settings/Giles/桌面/报表_20040504.xls";
try {
Runtime.getRuntime().exec("cmd /c start excel /"" + path + "/"");
} catch (IOException e) {
e.printStackTrace();
}
======================================================================================================
Execute an external program
This example will capture the output (from stdio) of an external program.import java.io.*; public class CmdExec { public CmdExec(String cmdline) { try { String line; Process p = Runtime.getRuntime().exec(cmdline); BufferedReader input = new BufferedReader (new InputStreamReader(p.getInputStream())); while ((line = input.readLine()) != null) { System.out.println(line); } input.close(); } catch (Exception err) { err.printStackTrace(); } } public static void main(String argv[]) { new CmdExec("myprog.bat"); } } |
[myprog.bat] echo hello world! |
NOTE 2: To make a shortcut : Create a shortcut to CmdExec.class. Go in the shortcut properties and change the target as "java CmdExec". Change the run option to Minimized to hide the black DOS console when the BAT is executed.
NOTE 3 : A useful link on the subject : JavaWorld article, thanks to O. Thomann.
The following example start a Dial-up connection on the Win plateform :
[Dialup.java] public class Dialup { public static void main(String[] args) throws Exception { Process p = Runtime.getRuntime().exec("dialup.bat"); p.waitFor(); System.out.println("Done."); } } |
[dialup.bat] rundll32.exe rnaui.dll,RnaDial MyConnection |
If you want to wait until the BAT file is finished, use "start /wait".
[dialup.bat] start /wait rundll32.exe rnaui.dll,RnaDial MyConnection |
rasdial "connection name" rasdial "connection name" /d to drop rasdial /? for more options |
String[] cmd = {"/bin/sh", "-c", "ls > hello"}; Runtime.getRuntime().exec(cmd); |
public class Test { public static void main(String[] args) throws Exception { Process p = Runtime.getRuntime().exec( "/"c:/program files/windows/notepad.exe/""); p.waitFor(); } } |
If you need to pass arguments, it's safer to a String array especially if they contain spaces.
String[] cmd = { "myProgram.exe", "-o=This is an option" }; Runtime.getRuntime().exec(cmd); |
PDF (Windows only)
[ShowPDF.java] public class ShowPDF { public static void main(String[] args) throws Exception { Process p = Runtime.getRuntime().exec("showpdf.bat mypdf.pdf"); p.waitFor(); System.out.println("Done."); } } [showpdf.bat] rundll32 url.dll,FileProtocolHandler %1 |
// Win9x Runtime.getRuntime().exec("start myscript.vbs"); // WinNT Runtime.getRuntime().exec("cmd /c start myscript.vbs"); |
Runtime.getRuntime().exec("hh.exe myhelpfile.chm"); |
where "file" is the filename of the data file ex. myresume.doc to start Word if the doc extension is associated with it.
Runtime.getRuntime().exec ("rundll32 SHELL32.DLL,ShellExec_RunDLL " + file.getAbsolutePath()); |
相关文章推荐
- Java如何调用外部外部命令?
- Java如何调用外部外部命令?
- Java调用外部程序命令时线程阻塞问题分析
- Java 使用Runtime.getRuntime.exec 和 ProcessBuilder 调用外部命令
- 关于Android中Java调用外部命令的三种方式
- java中如何调用操作系统命令
- c#如何检查局域网内服务器是否连通(调用外部Ping命令获取网络连接情况)
- Java如何调用外部exe程序
- oracle如何使用java source调用外部程序
- JAVA如何调用DOS命令
- python中如何调用shell等外部的命令
- JAVA如何调用DOS命令
- Java调用外部命令
- 如何在iPhone程序中调用外部命令
- JAVA学习22_在Java中执行脚本命令以及调用外部程序说明
- JAVA如何调用DOS命令
- 如何在java程序中调用linux命令或者shell脚本
- java 执行命令、调用bat文件、调用外部程序的两种方法
- php 无法执行外部命令 如何调用外部命令
- java调用外部命令