没想到用豆包给电脑做的定时工具批处理文件还挺好使。平时没玩这么高级的功能,没想到豆包还能这样

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

 

共 3 条评论
回忆忧伤 1小时前
0 

改了。太长了发不上来。

快乐人儿 [楼主] 34分钟前
0 

我不会代码啊,都是让豆包帮我改的。不过他改了也没办法设置什么半小时啊,一个半小时的都只能设置整点

快乐人儿 [楼主] 19分钟前
0 

不知道这个能不能用,今晚上回去再试试, @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

 

添加一条新评论

登录后可以发表评论 去登录