當我們需要在java程序中調用外部程序,我們可用通過Runtime.exec()調用來完成。
The class java.lang.Runtime features a static method called getRuntime(), which retrieves the current Java Runtime Environment. That is the only way to obtain a reference to the Runtime object. With that reference, you can run external programs by invoking the Runtime class's exec() method. Developers often call this method to launch a browser for displaying a help page in HTML.
exec()有四個重載版本 There are four overloaded versions of the exec() command:
public Process exec(String command); public Process exec(String [] cmdArray);
public Process exec(String command, String [] envp); public Process exec(String [] cmdArray, String [] envp);
For each of these methods, a command -- and possibly a set of arguments -- is passed to an operating-system-specific function call. This subsequently creates an operating-system-specific process (a running program) with a reference to a Process class returned to the Java VM. The Process class is an abstract class, because a specific subclass of Process exists for each operating system. You can pass three possible input parameters into these methods: A single string that represents both the program to execute and any arguments to that program An array of strings that separate the program from its arguments An array of environment variables Pass in the environment variables in the form name=value. If you use the version of exec() with a single string for both the program and its arguments, note that the string is parsed using white space as the delimiter via the StringTokenizer class.
以上內容來自於網絡。
關於java調用外部程序需要注意的事項
1. 當調用的外部命令中包含重定向(<、>),管道( | ) 命令時,exec(String command)的版本不能正確解析重定向、管道操作符。所以需要使用exec(String [] cmdArray)。
2.永遠要在調用waitFor()方法之前讀取數據流
永遠要先從標准錯誤流中讀取,然后再讀取標准輸出流
3.在exec()后 立即調用waitFor()會導致進程掛起。
java 調用windows 腳本:
先看下面的例子,該例子實現通過調用bat腳本打印“hellword”。代碼如下:
import java.io.IOException; import java.io.InputStream; public class callbat { public static void main(String args[]){ callCmd("C:/run.bat"); } public static void callCmd(String locationCmd){ try { Process child = Runtime.getRuntime().exec(locationCmd); InputStream in = child.getInputStream(); int c; while ((c = in.read()) != -1) { System.out.println((char)c); } in.close(); try { child.waitFor(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("done"); } catch (IOException e) { e.printStackTrace(); } } }
run.bat:中內容如下:
echo "hello word" exit
java的Runtime.getRuntime().exec(commandStr)可以調用執行cmd指令。
cmd /c dir 是執行完dir命令后關閉命令窗口。 cmd /k dir 是執行完dir命令后不關閉命令窗口。
cmd /c start dir 會打開一個新窗口后執行dir指令,原窗口會關閉。
cmd /k start dir 會打開一個新窗口后執行dir指令,原窗口不會關閉。
可以用cmd /?查看幫助信息。
★CMD命令★
1. gpedit.msc-----組策略
2. sndrec32-------錄音機
3. Nslookup-------IP地址偵測器
4. explorer-------打開資源管理器
5. logoff---------注銷命令
6. tsshutdn-------60秒倒計時關機命令
7. lusrmgr.msc----本機用戶和組
8. services.msc---本地服務設置
9. oobe/msoobe /a----檢查XP是否激活
10. notepad--------打開記事本
11. cleanmgr-------垃圾整理
12. net start messenger----開始信使服務
13. compmgmt.msc---計算機管理
14. net stop messenger-----停止信使服務
15. conf-----------啟動netmeeting
16. dvdplay--------DVD播放器
17. charmap--------啟動字符映射表
18. diskmgmt.msc---磁盤管理實用程序
19. calc-----------啟動計算器
20. dfrg.msc-------磁盤碎片整理程序
21. chkdsk.exe-----Chkdsk磁盤檢查
22. devmgmt.msc--- 設備管理器
23. regsvr32 /u *.dll----停止dll文件運行
24. drwtsn32------ 系統醫生
25. rononce -p ----15秒關機
26. dxdiag---------檢查DirectX信息
27. regedt32-------注冊表編輯器
28. Msconfig.exe---系統配置實用程序
29. rsop.msc-------組策略結果集
30. mem.exe--------顯示內存使用情況
31. regedit.exe----注冊表
32. winchat--------XP自帶局域網聊天
33. progman--------程序管理器
34. winmsd---------系統信息
35. perfmon.msc----計算機性能監測程序
36. winver---------檢查Windows版本
37. sfc /scannow-----掃描錯誤並復原
38. taskmgr-----任務管理器(2000/xp/2003)
39. winver---------檢查Windows版本
40. wmimgmt.msc----打開windows管理體系結構(WMI)
41. wupdmgr--------windows更新程序
42. wscript--------windows腳本宿主設置
43. write----------寫字板
44. winmsd---------系統信息
45. wiaacmgr-------掃描儀和照相機向導
46. winchat--------XP自帶局域網聊天
47. mem.exe--------顯示內存使用情況
48. Msconfig.exe---系統配置實用程序
49. mplayer2-------簡易widnows media player
50. mspaint--------畫圖板
51. mstsc----------遠程桌面連接
52. mplayer2-------媒體播放機
53. magnify--------放大鏡實用程序
54. mmc------------打開控制台
55. mobsync--------同步命令
56. dxdiag---------檢查DirectX信息
57. drwtsn32------ 系統醫生
58. devmgmt.msc--- 設備管理器
59. dfrg.msc-------磁盤碎片整理程序
60. diskmgmt.msc---磁盤管理實用程序
61. dcomcnfg-------打開系統組件服務
62. ddeshare-------打開DDE共享設置
63. dvdplay--------DVD播放器
64. net stop messenger-----停止信使服務
65. net start messenger----開始信使服務
66. notepad--------打開記事本
67. nslookup-------網絡管理的工具向導
68. ntbackup-------系統備份和還原
69. narrator-------屏幕“講述人”
70. ntmsmgr.msc----移動存儲管理器
71. ntmsoprq.msc---移動存儲管理員操作請求
72. netstat -an----(TC)命令檢查接口
73. syncapp--------創建一個公文包
74. sysedit--------系統配置編輯器
75. sigverif-------文件簽名驗證程序
76. sndrec32-------錄音機
77. shrpubw--------創建共享文件夾
78. secpol.msc-----本地安全策略
79. syskey---------系統加密,一旦加密就不能解開,保護windows xp系統的雙重密碼
80. services.msc---本地服務設置
81. Sndvol32-------音量控制程序
82. sfc.exe--------系統文件檢查器
83. sfc /scannow---windows文件保護
84. tsshutdn-------60秒倒計時關機命令
84. tsshutdn-------60秒倒計時關機命令
85. tourstart------xp簡介(安裝完成后出現的漫游xp程序)
86. taskmgr--------任務管理器
87. eventvwr-------事件查看器
88. eudcedit-------造字程序
89. explorer-------打開資源管理器
90. packager-------對象包裝程序
91. perfmon.msc----計算機性能監測程序
92. progman--------程序管理器
93. regedit.exe----注冊表
94. rsop.msc-------組策略結果集
95. regedt32-------注冊表編輯器
96. rononce -p ----15秒關機
97. regsvr32 /u *.dll----停止dll文件運行
98. regsvr32 /u zipfldr.dll------取消ZIP支持
99. cmd.exe--------CMD命令提示符
100. chkdsk.exe-----Chkdsk磁盤檢查
101. certmgr.msc----證書管理實用程序
102. calc-----------啟動計算器
103. charmap--------啟動字符映射表
104. cliconfg-------SQL SERVER 客戶端網絡實用程序
105. Clipbrd--------剪貼板查看器
106. conf-----------啟動netmeeting
107. compmgmt.msc---計算機管理
108. cleanmgr-------垃圾整理
109. ciadv.msc------索引服務程序
110. osk------------打開屏幕鍵盤
111. odbcad32-------ODBC數據源管理器
112. oobe/msoobe /a----檢查XP是否激活
113. lusrmgr.msc----本機用戶和組
114. logoff---------注銷命令
115. iexpress-------木馬捆綁工具,系統自帶
116. Nslookup-------IP地址偵測器
117. fsmgmt.msc-----共享文件夾管理器
118. utilman--------輔助工具管理器
119. gpedit.msc-----組策略等命令。