Java執行cmd命令、bat腳本、linux命令,shell腳本等


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);
    }

}
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM