You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java实现Windows自动重启并累计重启次数,运行无响应如何解决

问题原因排查

  • 逻辑错误:原代码只要C:\reboots\numberOfReboots.txt存在就直接System.exit(0),第一次运行创建文件后,后续开机启动都会直接退出,不会执行重启逻辑;且计数未从历史文件读取,永远都是1,无法实现累加。
  • 路径缺失未处理:如果C:\reboots文件夹不存在,创建输出文件时会抛出IO异常,程序直接崩溃,无法走到执行重启命令的步骤。
  • 命令执行适配问题:Windows下直接调用shutdown命令需要通过cmd.exe承载,直接用Runtime.exec执行可能出现调用失败的情况。
  • 启动配置问题:若直接将jar包放入启动文件夹,系统无法直接运行jar程序,需要配套bat启动脚本。

修复后代码

import java.io.*;

public class AutoRestart {
    public static void main(String[] args) throws IOException {
        int numRestarts = 0;
        File rebootDir = new File("C:\\reboots");
        // 先判断文件夹是否存在,不存在就创建
        if (!rebootDir.exists()) {
            rebootDir.mkdirs();
        }
        File countFile = new File(rebootDir, "numberOfReboots.txt");
        // 读取历史重启次数
        if (countFile.exists()) {
            try (BufferedReader br = new BufferedReader(new FileReader(countFile))) {
                String line = br.readLine();
                if (line != null && line.contains(": ")) {
                    numRestarts = Integer.parseInt(line.split(": ")[1].trim());
                }
            } catch (Exception e) {
                // 读取异常就默认从0开始
                numRestarts = 0;
            }
        }
        // 次数累加
        numRestarts++;
        // 写入新的计数
        try (PrintWriter writer = new PrintWriter(countFile)) {
            writer.println("Number of times rebooted: " + numRestarts);
        }
        // 适配Windows调用shutdown命令
        Runtime.getRuntime().exec("cmd /c shutdown -r -t 0");
    }
}

启动配置步骤

  1. 将代码编译打包成可运行jar包,比如命名为AutoRestart.jar,放在固定路径比如C:\reboots\AutoRestart.jar
  2. 新建一个bat脚本,命名为startAutoRestart.bat,内容如下:
@echo off
java -jar C:\reboots\AutoRestart.jar
  1. 把这个bat脚本放入Windows启动文件夹(按下Win+R输入shell:startup回车就能打开启动文件夹)
  2. 测试前建议先手动运行一次bat脚本,确认可以正常重启、计数文件正常写入后再验证开机启动逻辑。
    如果触发重启失败,可以右键bat脚本选择「以管理员身份运行」测试,确认是否是权限不足导致的问题,需要的话可以给bat脚本配置管理员运行权限。

内容的提问来源于stack exchange,提问作者SuddenLife

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 15:54:04