2 快乐人儿 1小时前 53次点击
这是我做的定时工具批处理文件的代码。时间可以从一小时到87,600小时,也就是1~10年。唯一我还没弄懂的就是怎么设置分钟,比方说我想一个半小时关机就弄不了。不知道是什么情况,我用它生成的粘贴进去也没法用。下面是代码
@echo off
setlocal enabledelayedexpansion
:input
cls
echo 请输入定时关机时间(输入数字表示小时,0取消):
set /p "hour="
:: 取消定时
if "%hour%"=="0" (
shutdown /a >nul 2>&1
if !errorlevel! equ 0 (
echo 已取消定时关机
) else (
echo 暂无定时关机任务
)
pause
exit /b
)
:: 验证输入是否为正整数
set "valid=1"
for /f "delims=0123456789" %%i in ("%hour%") do set "valid=0"
if "!valid!"=="0" (
echo 输入无效,请输入正整数(如1、25、100等)或0
pause
goto input
)
if %hour% lss 1 (
echo 小时数不能小于1,请重新输入
pause
goto input
)
:: 计算总秒数并执行
set /a total_seconds=hour*3600
echo 将在%hour%小时后自动关机,取消请重新运行输入0
shutdown /s /t !total_seconds!
pause
我不会代码啊,都是让豆包帮我改的。不过他改了也没办法设置什么半小时啊,一个半小时的都只能设置整点
不知道这个能不能用,今晚上回去再试试, @echo off
chcp 65001 > nul
setlocal enabledelayedexpansion
title 定时关机工具
:input
cls
echo ===================== 定时关机工具 =====================
echo 说明:输入数字表示小时(支持小数,如 0.5=30分钟),输入0取消定时
echo ========================================================
echo.
set "hour="
set /p "hour=请输入定时关机时间:"
:: 处理空输入
if not defined hour (
echo 错误:禁止输入为空!
pause > nul
goto input
)
:: 取消定时关机
if "%hour%"=="0" (
shutdown /a >nul 2>&1
if !errorlevel! equ 0 (
echo 成功:已取消定时关机任务
) else (
echo 提示:当前暂无定时关机任务
)
pause > nul
exit /b
)
:: 验证输入是否为数字(支持整数和小数)
set "valid=1"
for /f "delims=0123456789." %%i in ("%hour%") do set "valid=0"
:: 限制小数点只能出现1次
set "dot_num=0"
for /f "delims=" %%i in ("%hour%") do (
set "str=%%i"
for /l %%j in (0,1,100) do (
if "!str:~%%j,1!"=="." set /a dot_num+=1
)
)
if !dot_num! gtr 1 set "valid=0"
if "!valid!"=="0" (
echo 错误:输入无效!请输入正数字(如1、0.5、2.5)或0
pause > nul
goto input
)
:: 计算总秒数(支持小数小时)
set /a int_hour=%hour%
set "decimal=!hour:%int_hour%=!"
if "!decimal!"=="." set "decimal=0"
if defined decimal set decimal=!decimal:.=!
:: 小数部分补零到2位,计算分钟
set "decimal=!decimal!00"
set /a min=!decimal:~0,2! * 60 / 100
set /a total_seconds=int_hour*3600 + min*60
:: 限制shutdown命令的时间范围(系统限制0-31536000秒,即1年)
if !total_seconds! lss 1 (
echo 错误:定时时间不能小于1分钟!
pause > nul
goto input
)
if !total_seconds! gtr 31536000 (
echo 错误:定时时间不能超过1年!
pause > nul
goto input
)
:: 执行定时关机
shutdown /s /t !total_seconds!
if !errorlevel! equ 0 (
echo 成功:将在 %hour% 小时后自动关机
echo 提示:重新运行本脚本输入0可取消定时
) else (
echo 错误:定时关机任务创建失败,请以管理员身份运行!
)
pause > nul
exit /b
改了。太长了发不上来。