在window下, Java调用执行bat脚本

参考博客: https://www.cnblogs.com/jing1617/p/6430141.html

最近一段时间用到了Java去执行window下的bat脚本, 这里简单记录一下:

我这里是先判断bat脚本是否存在, 然后去决定是否执行bat脚本,

直接上代码:

下面是我测试的bat脚本, 就输出一句话, 把文件命令为PostStartupScript.bat:

echo "hello word"
package com.test;

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class Test {
            
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String batPath = "C:/Philips/SIServer/PostStartupScript.bat"; // 把你的bat脚本路径写在这里
        File batFile = new File(batPath);
        boolean batFileExist = batFile.exists();
        System.out.println("batFileExist:" + batFileExist);
        if (batFileExist) {
            callCmd(batPath);
        }
    }
    
    private static void  callCmd(String locationCmd){
        StringBuilder sb = new StringBuilder();
        try {
            Process child = Runtime.getRuntime().exec(locationCmd);
            InputStream in = child.getInputStream();
            BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(in));
            String line;
            while((line=bufferedReader.readLine())!=null)
            {
                sb.append(line + "\n");
            }
               in.close();
            try {
                child.waitFor();
            } catch (InterruptedException e) {
                System.out.println(e);
            }
            System.out.println("sb:" + sb.toString());
            System.out.println("callCmd execute finished");           
        } catch (IOException e) {
            System.out.println(e);
        }
     }
}

运行结果如下:

batFileExist:true
sb:
D:\TestJava>echo "hello word" 
"hello word"

callCmd execute finished

这里是在不打开任何窗口下运行的, 非常适合那些在后台需要执行bat脚本的程序.

如果想让程序打开窗口去运行bat脚本, 可以使用如下的命令:

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 /k start C:/Philips/SIServer/PostStartupScript.bat
然后会弹出新的窗口, 执行bat脚本.

 

 

 

转载于:https://www.cnblogs.com/xumBlog/p/11064109.html

### 设置 Windows 定时执行批处理 (.bat) 脚本 #### 使用任务计划程序创建新任务 为了实现定时运行 `.bat` 文件,在 Windows 中可以利用内置的任务计划程序工具。打开此工具的方法有多种,一种简单的方式是在 Cortana 或者搜索框内输入“任务计划程序”,并点击进入。 在任务计划程序窗口中,选择左侧栏中的“任务计划程序库”。接着,通过操作菜单里的“创建基本任务...”来启动向导[^1]。 #### 配置触发器与动作 当创建一个新的基本任务时,会提示设定该任务名称以及描述信息,这有助于日后管理和识别特定任务。之后,将遇到配置触发条件的界面,可以选择基于时间(如每天、每周等)、事件或其他情况作为触发依据。对于定期执行的需求而言,“每日”可能是最常用的选择之一;此时需指定具体的开始日期及时刻[^2]。 完成上述设置后,下一步是指定要采取的动作——即运行命令或程序。这里应选取“启动程序/脚本”的选项,并浏览定位到待调度执行的那个 `.bat` 文件路径下,选中目标文件即可[^3]。 #### 进阶参数调整 除了基础配置外,还有更多高级属性可供自定义优化: - **常规**:可勾选允许按需运行(即使未登录),提高灵活性; - **条件**:如果计算机处于使用状态,则停止任务,防止干扰当前工作流程; - **设置**:规定错过触发后的重试机制,确保不会因为短暂断电等原因而遗漏重要作业。 ```powershell # PowerShell 示例代码用于展示如何编程方式创建相同效果的任务计划 $action = New-ScheduledTaskAction -Execute 'C:\path\to\your-script.bat' $trigger = New-ScheduledTaskTrigger -Daily -At 9am Register-ScheduledTask -TaskName "My Daily Script" -Action $action -Trigger $trigger -User "SYSTEM" ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值