1.Windows下執行cmd命令
如復制 D:\tmp\my.txt 到D:\tmp\my_by_only_cmd.txt
現文件如圖示:
執行代碼:
private static void runWinCmd() throws IOException, InterruptedException { Process proc = Runtime.getRuntime().exec("cmd.exe /c copy D:\\tmp\\my.txt D:\\tmp\\my_by_only_cmd.txt"); int processCode = proc.waitFor(); System.out.println("Process code: " + processCode); }
結果如圖示,執行成功
2.Windows下執行bat腳本
刪除多余文件,新建mytest.bat,內容如下
copy D:\tmp\my.txt D:\tmp\my_by_bat.txt
exit
現文件如圖示:
執行代碼:
private static void runWinBat() throws IOException, InterruptedException { Process proc = Runtime.getRuntime().exec("cmd.exe /c start D:\\tmp\\mytest.bat"); int processCode = proc.waitFor(); System.out.println("Process code: " + processCode); }
結果如圖示,執行成功
3.Linux下執行命令
如復制 /opt/tmp/my.txt 到 /opt/tmp/my_by_copy.txt
現文件如圖示:
執行代碼:
private static void runLinuxCommand() throws IOException, InterruptedException { Process proc = Runtime.getRuntime().exec("sudo cp /opt/tmp/my.txt /opt/tmp/my_by_copy.txt"); int processCode = proc.waitFor(); System.out.println("Process code: " + processCode); }
結果如圖示,執行成功
4.Linux下執行shell腳本
刪除多余文件,新建mytest.sh,內容如下
sudo cp /opt/tmp/my.txt /opt/tmp/my_by_sh.txt
現文件如圖示:
執行代碼:
private static void runLinuxShell() throws IOException, InterruptedException { Process proc = Runtime.getRuntime().exec("bash /opt/tmp/mytest.sh"); int processCode = proc.waitFor(); System.out.println("Process code: " + processCode); }
結果如圖示,執行成功
Tip:Java的Process對象的waitFor()方法返回值等於0時,說明子進程正常完成退出,如不等於0,則有相應的異常解釋,可參考 此處
完整代碼如下:

package com.runtime; import java.io.IOException; /** * @author: Convict.Yellow * @date: 2020/10/27 10:28 * @description: TestProcess */ public class TestProcess { public static void main(String[] args) throws IOException, InterruptedException { runWinCmd(); runWinBat(); runLinuxCommand(); runLinuxShell(); } private static void runWinCmd() throws IOException, InterruptedException { Process proc = Runtime.getRuntime().exec("cmd.exe /c copy D:\\tmp\\my.txt D:\\tmp\\my_by_only_cmd.txt"); int processCode = proc.waitFor(); System.out.println("Process code: " + processCode); } private static void runWinBat() throws IOException, InterruptedException { Process proc = Runtime.getRuntime().exec("cmd.exe /c start D:\\tmp\\mytest.bat"); int processCode = proc.waitFor(); System.out.println("Process code: " + processCode); } private static void runLinuxCommand() throws IOException, InterruptedException { Process proc = Runtime.getRuntime().exec("sudo cp /opt/tmp/my.txt /opt/tmp/my_by_copy.txt"); int processCode = proc.waitFor(); System.out.println("Process code: " + processCode); } private static void runLinuxShell() throws IOException, InterruptedException { Process proc = Runtime.getRuntime().exec("bash /opt/tmp/mytest.sh"); int processCode = proc.waitFor(); System.out.println("Process code: " + processCode); } }