美文网首页Java学习笔记
Java执行Shell & VB脚本

Java执行Shell & VB脚本

作者: 想象之中丶意料之外 | 来源:发表于2021-09-15 17:08 被阅读0次
    • 有时候我们在Linux中运行Java程序时,需要调用一些Shell命令和脚本。而Runtime.getRuntime().exec()方法给我们提供了这个功能,而且Runtime.getRuntime()给我们提供了以下几种exec()方法:
    // 在单独的进程中执行指定的字符串命令。   
    Process exec(String command)
    
    // 在单独的进程中执行指定命令和变量。  
    Process exec(String[] cmdarray)
    
    // 在指定环境的独立进程中执行指定命令和变量。
    Process exec(String[] cmdarray, String[] envp)
    
    //  在指定环境和工作目录的独立进程中执行指定的命令和变量。
    Process exec(String[] cmdarray, String[] envp, File dir)
    
    // 在指定环境的单独进程中执行指定的字符串命令。  
    Process exec(String command, String[] envp)
    
    // 在有指定环境和工作目录的独立进程中执行指定的字符串命令。  
    Process exec(String command, String[] envp, File dir)
    
    • Shell 脚本

    String shell = "/usr/local/app/start.sh"
    Runtime.getRuntime().exec(shell);
    
    • VB脚本

    String vbsFile = "D:/App/todo-list/start.vbs";
    Runtime.getRuntime().exec("cscript " + vbsFile);
    

    正斜杠可以正常再窗口中运行,不需要使用 “\” 来做 。

    赠送一个 .bat脚本,如何重启java程序实例

    rem  关闭单行执行
    @echo off
    rem 定义要重启的jar包名称
    set name=todo-list.jar
    rem  利用jps -l 命令(查看在执行的java程序),再配个管道符|,做筛选,找到 需要找的jar包程序
    for /f "usebackq tokens=1,2" %%a in (`jps -l ^|findstr %name%`) do (
    set pid=%%a
    set pname=%%b
    )
    if not defined pid (echo process %name% does not exists) else (
    rem 根据进程ID,kill进程
    taskkill /f /pid %pid%
    )
    rem 暂停2秒
    ping /n 2 127.1>nul
    rem 设置log文件名称
    set dt=%date:~0,4%%date:~5,2%%date:~8,2%
    rem 启动jar包程序
    java -jar D:\App\todo-list\todo-list.jar >> D:\App\todo-list\log\log%dt%.txt
    exit
    

    相关文章

      网友评论

        本文标题:Java执行Shell & VB脚本

        本文链接:https://www.haomeiwen.com/subject/xkxlgltx.html