吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2044|回复: 20
收起左侧

[其他原创] at命令已被弃用,自用批处理自定时关机

  [复制链接]
koi1 发表于 2024-1-2 17:14
本帖最后由 koi1 于 2024-3-13 10:44 编辑

某一天在win10需要用at shutdown -s 来定时关机时发现at命令已被弃用。于时才写了这个。
自定关机.bat

@echo off
title 自定时间关机 & color 02 & mode con: COLS=60 LINES=20
echo.
goto chooseday
:setdown
set nxdy=%1
set s=0
set m=0
set h=0
set seth=0
set setm=0
set  ab=关机时间:
set  abb=现在时间:
set  ab1=后关机,设定后若重启无效
set bc1=取消关机:shutdown -a
echo.
set /p seth=输入要关机的时:
if %nxdy% equ 0 (
call:isint %seth% 1 0 )
if %nxdy% equ 1 (
call:isint %seth% 1 1 )
set /p setm=输入要关机的分:
if %nxdy% equ 0 (
call:isint %setm% 2 0 )
if %nxdy% equ 1 (
call:isint %setm% 2 1 )

set  h1=%time:~0,2% 
set  m1=%time:~3,2% 
set  s1=%time:~6,2%

if %nxdy% equ 0 if %seth% lss %h1% (
  echo. 只能设定当天的
  goto chooseday )
if %nxdy% equ 0 if %seth% equ %h1% (
  if %setm% lss %m1% (
  echo. 只能设定当天的
  goto chooseday ) )
CLS
if %nxdy% equ 0 (
 set /a needh=%seth%-%h1% )
if %nxdy% equ 1 (
    set /a needh=24-%h1%+%seth%  )
if %setm% lss %m1% (
 set /a needh=%needh%-1
 set /a needm=%setm%+60-%m1% )
if %setm% geq %m1%  (set /a needm=%setm%-%m1%)
set /a hs=%needh%*60*60
set /a ms=%needm%*60
set /a needs=%hs%+%ms%-%s1%
echo.
echo.    %abb% %h1%:%m1%:%s1%
echo.    %needh%时%needm%分%ab1%
echo.    %ab% %seth%:%setm% 
echo.    
echo.
shutdown -s -f -t %needs%
goto chooseday

:canceldown
shutdown -a 
set cc=已取消关机
if %errorlevel% equ 0 (
echo. %cc% ) 

goto chooseday

:mychooce1
set /p mysel=设置/取消关机(Y/N):
if "%mysel%" == "Y" (call:setdown 0 )
if "%mysel%" == "y" (call:setdown 0 )
if "%mysel%" == "N" (goto canceldown )
if "%mysel%" == "n" (goto canceldown )
goto mychooce1

:mychooce2
set /p mysel=设置/取消关机(Y/N):
if "%mysel%" == "Y" (call:setdown 1 )
if "%mysel%" == "y" (call:setdown 1 )
if "%mysel%" == "N" (goto canceldown )
if "%mysel%" == "n" (goto canceldown )
goto mychooce2

:chooseday
set dp=%~dp0
::set ndy=nextdy.bat
set atk=stdwtask.bat
set /p daysel=选择当日/跨日/计划任务每天,定时关机(D/M/E):
if "%daysel%" == "D" ( goto mychooce1 )
if "%daysel%" == "d" ( goto mychooce1 )
if "%daysel%" == "M" ( goto mychooce2 )
if "%daysel%" == "m" ( goto mychooce2 )
if "%daysel%" == "E" ( call %dp%%atk% )
if "%daysel%" == "e" ( call %dp%%atk% )
goto chooseday

:isint
set intst=%1
set hm=%2
set dyy=%3
set /a isn=intst
if %isn% neq %intst% ( 
  echo. 不是整数,重新输入
  if %dyy% equ 0 (
  call:setdown 0 ) else (
  call:setdown 1  )
) else ( 
 if %intst% lss 0 (
    echo. 小于0,重新输入
    if %dyy% equ 0 (
    call:setdown 0 ) else (
    call:setdown 1  )
)
 if %hm% equ 1 (
  if %intst% geq 24 (
    echo. 大于等于24,重新输入
    if %dyy% equ 0 (
    call:setdown 0 ) else (
    call:setdown 1  )
   )
 )
 if %hm% equ 2 (
  if %intst% geq 60 (
    echo. 大于等于60,重新输入
    if %dyy% equ 0 (
    call:setdown 0 ) else (
    call:setdown 1  )
   )
 ) 

) 
goto eof

:eof

运行图:

微信截图_20240102171711.png
微信截图_20240102171736.png
第三个选项计划任务每天定时关机脚本在17楼

免费评分

参与人数 5吾爱币 +11 热心值 +3 收起 理由
hwh425 + 1 热心回复!
只为改变世界 + 1 这个也好用https://stgod.lanzoul.com/i0fAr1di7pwh 密码:deby
WGL + 1 + 1 @echo off chcp 65001解决乱码问题
初夏小雨 + 1 + 1 谢谢@Thanks!
侃遍天下无二人 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

侃遍天下无二人 发表于 2024-1-2 19:00
一般来说,假定我在下载文件,预计30分钟后完成,那么我可以给一个小时的时间,以防万一,这时候直接用shutdown -s -t 3600就差不多了
 楼主| koi1 发表于 2024-1-3 10:12
本帖最后由 koi1 于 2024-1-3 10:17 编辑

里面的第三个选项每天计划任务的批处理也放上来吧。单独运行这个来设置计划任务也可以,不过这个要管理员身份运行。
stdwtask.bat

@echo off
title 计划任务关机 & color 02 & mode con: COLS=60 LINES=20
echo.
net session >nul 2>&1
if %errorLevel% == 0 ( set adm="adm" ) else ( set adm="notadm" ) 
goto ychoose
:createdown
set s=0
set m=0
set h=0
set  ab=关机时间:

echo.
set /p "seth=输入要关机的时:"
call:isint %seth%
if %seth% lss 10 ( set "seth=0%seth%" )

set /p setm=输入要关机的分:
call:isint %setm%
if %setm% lss 10 ( set "setm=0%setm%" )

schtasks /create /tn "myshtdown" /tr "shutdown /s /f /t 0" /sc daily /st %seth%:%setm%:00 /ru System
if %errorlevel% equ 0 ( echo. 创建计划任务:myshtdown )
if %errorlevel% equ 1  ( echo. 权限不够,请右键以管理员身份运行 )
if %errorlevel% equ 5  ( echo. 被用户或者杀软阻止 )
if %errorlevel% equ -2147467259 ( echo. 输入了无效的时或分 )
goto ychoose

:disdown
schtasks /change /tn "myshtdown" /disable
if %errorlevel% equ 0 ( echo. 已禁用计划任务:myshtdown )

if %errorlevel% equ 1 if %adm% == "notadm"  ( echo. 或权限不够,请右键以管理员身份运行 )

goto ychoose

:abldown
schtasks /change /tn "myshtdown" /enable
if %errorlevel% equ 0 ( echo. 已启用计划任务:myshtdown )

if %errorlevel% equ 1 if %adm% == "notadm"  ( echo. 或权限不够,请右键以管理员身份运行 )
goto ychoose

:ychoose
set /p selc=创建/禁用/启用计划任务(C/D/A):
if "%selc%" == "C" ( goto createdown )
if "%selc%" == "c" ( goto createdown )
if "%selc%" == "D" ( goto disdown )
if "%selc%" == "d" ( goto disdown )
if "%selc%" == "A" ( goto abldown )
if "%selc%" == "a" ( goto abldown )
goto ychoose

:isint
set intst=%1
set /a isn=intst
if %isn% neq %intst% ( 
  echo. 不是整数,重新输入
  goto createdown 
) else ( 
 if %intst% lss 0 (
    echo. 小于0,重新输入
    goto createdown
)

) 
goto eof

:eof
WGL 发表于 2024-1-2 22:15
感谢分享,我用win11新建文本文档改后缀运行显示乱码,在开头添加指定脚本文件的编码命令就正常了。

@echo off
chcp 65001

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
slink0 + 1 + 1 这个真的被秀到了

查看全部评分

Batcher 发表于 2024-1-2 21:30
推荐使用 schtasks 命令创建任务计划
https://mp.weixin.qq.com/s/LKTmJuq45bZbxoGVTfla1w
菜鸟豪哥 发表于 2024-1-2 19:52
shutdown -s -t 就挺好用
lcg2014 发表于 2024-1-2 20:27
windows就是半成品
 楼主| koi1 发表于 2024-1-2 21:48
菜鸟豪哥 发表于 2024-1-2 19:52
shutdown -s -t 就挺好用

核心就是这个shutdown -s -t ,不过我用它实现at命令一种方法
 楼主| koi1 发表于 2024-1-2 21:49
本帖最后由 koi1 于 2024-1-2 21:57 编辑
Batcher 发表于 2024-1-2 21:30
推荐使用 schtasks 命令创建任务计划
https://mp.weixin.qq.com/s/LKTmJuq45bZbxoGVTfla1w

脚本也有用到这个,觉得不是很必要没放上来,可能多数是某次要定时关机不是每天。
 楼主| koi1 发表于 2024-1-2 21:52
本帖最后由 koi1 于 2024-1-2 21:54 编辑
侃遍天下无二人 发表于 2024-1-2 19:00
一般来说,假定我在下载文件,预计30分钟后完成,那么我可以给一个小时的时间,以防万一,这时候直接用shut ...

发现没有at了我第一时间是想用什么可以代替,最后我只想到以上用shutdown -s -t 实现at命令的一种方法写出来。并且更傻瓜式了,给不会用命令的同事也能用了。
luanshils 发表于 2024-1-3 01:01
本帖最后由 luanshils 于 2024-1-3 01:04 编辑
WGL 发表于 2024-1-2 22:15
感谢分享,我用win11新建文本文档改后缀运行显示乱码,在开头添加指定脚本文件的编码命令就正常了。

@ec ...

这个问题是编码问题,就是gbk,ansi之类的。你另存为改成ansi试试,顺便说,系统默认创建 的记事本的字符编码好像都是那一个(就是会中文乱码的那个)
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 18:37

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表