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

如何使用Windows Batch脚本计算证书剩余到期天数

Windows Batch 实现证书到期剩余天数计算脚本

实现逻辑

  • 第一步:从证书信息中匹配包含until:的行,提取到期时间字段
  • 第二步:将英文月份缩写转换为数字格式,方便日期计算
  • 第三步:分别将到期日期、当前系统日期转换为累计天数格式,差值即为剩余天数
  • 第四步:处理证书已过期的异常场景

完整脚本代码

@echo off
setlocal enabledelayedexpansion

:: 配置项:证书信息文件路径,可根据需求修改为读取命令输出
set "CERT_FILE=cert.txt"
:: 英文月份缩写映射为数字
set "MONTH_MAP=Jan:1 Feb:2 Mar:3 Apr:4 May:5 Jun:6 Jul:7 Aug:8 Sep:9 Oct:10 Nov:11 Dec:12"

:: 1. 提取until字段后的到期日期字符串
for /f "tokens=* delims=" %%a in ('type "%CERT_FILE%" ^| findstr /i "until:"') do (
    set "line=%%a"
    set "expire_str=!line:*until:=!"
)

:: 2. 拆分得到到期日期的月、日、年
for /f "tokens=2,3,6 delims= " %%b in ("!expire_str!") do (
    set "e_mon_str=%%b"
    set "e_day=%%c"
    set "e_year=%%d"
)

:: 3. 转换到期月份为数字格式
for %%m in (%MONTH_MAP%) do (
    for /f "tokens=1,2 delims=:" %%x in ("%%m") do (
        if "%%x"=="!e_mon_str!" set "e_mon=%%y"
    )
)

:: 4. 调用子程序把到期日期转成累计天数
call :date_to_days %e_year% %e_mon% %e_day% e_days

:: 5. 读取当前系统日期并转成累计天数(国内系统默认年-月-日格式,其他格式需调整拆分规则)
for /f "tokens=1-3 delims=/- " %%a in ("%date%") do (
    set "c_year=%%a"
    set "c_mon=%%b"
    set "c_day=%%c"
)
call :date_to_days %c_year% %c_mon% %c_day% c_days

:: 6. 计算剩余天数
set /a left_days=!e_days! - !c_days!

if !left_days! gtr 0 (
    echo 证书距离到期还有 !left_days! 天
) else (
    set /a expired_days=0 - !left_days!
    echo 证书已过期 !expired_days! 天
)

endlocal
pause
goto :eof

:: 日期转累计天数子程序,入参顺序:年 月 日 结果存储变量名
:date_to_days
setlocal
set "y=%~1"
set "m=%~2"
set "d=%~3"
set /a "m-=12,m+=3,y-=!m! /12"
set /a "days= 365*y + y/4 - y/100 + y/400 + (153*m +2)/5 +d"
endlocal & set "%~4=%days%"
goto :eof

使用说明

  1. 先将你的证书信息保存到和脚本同目录的cert.txt中即可直接运行
  2. 如果需要直接读取openssl命令的输出无需保存文件,可以将第一步提取到期日期的for语句替换为:
for /f "tokens=* delims=" %%a in ('openssl x509 -in 你的证书路径.cer -noout -dates ^| findstr /i "until:"') do (
  1. 若你的系统日期格式为月/日/年,自行调整拆分当前日期的变量赋值顺序即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:15:03