@echo off
setlocal enabledelayedexpansion
:: 1. 获取当前精确时间(用于后续计算运行时长)
for /f "tokens=2 delims==" %%a in ('wmic os get localdatetime /value') do set "start_time=%%a"
set /a start_secs=!start_time:~8,2!*3600 + !start_time:~10,2!*60 + !start_time:~12,2!
:: 2. 设置目标时间(示例:2023-01-01 12:00:00)
set target_date=2023-01-01
set target_time=12:00:00
echo 正在修改系统时间为 %target_date% %target_time%...
date %target_date%
time %target_time%
:: 3. 等待 1 秒(确保时间修改生效)
timeout /t 1 /nobreak >nul
:: 4. 启动目标软件(替换成你的软件路径)
echo 正在启动软件...
start "" /wait "C:\Program Files\YourApp\app.exe"
:: 5. 计算软件运行时长(秒)
for /f "tokens=2 delims==" %%a in ('wmic os get localdatetime /value') do set "end_time=%%a"
set /a end_secs=!end_time:~8,2!*3600 + !end_time:~10,2!*60 + !end_time:~12,2!
set /a elapsed_secs=end_secs - start_secs
:: 6. 恢复时间 = 原始时间 + 软件运行时长
set /a restore_h=!start_time:~8,2! + elapsed_secs/3600
set /a restore_m=!start_time:~10,2! + (elapsed_secs%%3600)/60
set /a restore_s=!start_time:~12,2! + elapsed_secs%%60
:: 处理进位(例如 70秒 -> 1分10秒)
if !restore_s! geq 60 (
set /a restore_s-=60
set /a restore_m+=1
)
if !restore_m! geq 60 (
set /a restore_m-=60
set /a restore_h+=1
)
if !restore_h! geq 24 (
set /a restore_h-=24
)
:: 格式化为 HH:MM:SS
set "restore_time=!restore_h!:!restore_m!:!restore_s!"
:: 恢复日期和时间
echo 正在恢复系统时间...
date !start_time:~0,4!-!start_time:~4,2!-!start_time:~6,2!
time !restore_time!
echo 操作完成!软件运行时长:约 %elapsed_secs% 秒