zoukankan      html  css  js  c++  java
  • Java执行cmd命令、bat脚本、linux命令,shell脚本等

    1.Windows下执行cmd命令

    如复制 D: mpmy.txt 到D: mpmy_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:	mpmy.txt D:	mpmy_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
  • 相关阅读:
    ET之快递测试法学习感悟20140922
    C#单元测试Nunit小结(20141018)
    oracle数据库导入导出09192255
    Mybatis-Configuration-详解
    Mybatis快速入门
    Ajax的学习笔记(一)
    php curl使用总结(一)
    ETL工具--DataX3.0实战
    SqlServer触发器的理解
    2017年的个人计划
  • 原文地址:https://www.cnblogs.com/convict/p/13884138.html
Copyright © 2011-2022 走看看