标题: [系统相关] [已解决]求助批处理输入时间,到达指定时间关机 [打印本页]
作者: mzzyb 时间: 2023-7-13 16:50 标题: [已解决]求助批处理输入时间,到达指定时间关机
本帖最后由 mzzyb 于 2023-7-14 11:58 编辑
本人写了一个到了指定时间关机的脚本,一直执行不出来,第一次执行读取不到时间变量,循环第二次就行,每次它计算的时间总是误差2分钟,请各位给我把把脉,谢谢。
下面的bat代码- cd /d %~dp0
- :20
- echo (1设置自动关机)(2取消自动关机)
- set /p g=请输入选项:
- if %g% equ 2 (
- shutdown /a
- goto 20
- )
- set /p h=请输小时:
- set /p m=请输分钟:
- set /a nowh=%time:~0,2%
- set /a nowm=%time:~3,2%
- echo %nowh%
- echo %nowm%
- if %nowh% equ %h% (
- set /a "t1=(%m%-%nowm%)*60"
- shutdown /s /t %t1%
- goto 20
- ) else if %nowm% GTR %m% (
- set /a "t2=(%h%-%nowh%-1)*3600+(60-%nowm%+%m%)*60"
- shutdown /s /t %t2%
- goto 20
- ) else (
- set /a "t3=(%h%-%nowh%)*3600+(%m%-%nowm%)*60"
- shutdown /s /t %t3%
- goto 20
- )
复制代码
麻烦大家帮我看下,如果你们电脑上执行没问题,那我再找找其他原因
作者: Batcher 时间: 2023-7-13 17:39
回复 1# mzzyb - :20
- echo (1设置自动关机)(2取消自动关机)
- set /p g=请输入选项:
- if %g% equ 2 (
- echo shutdown /a
- goto :20
- )
- set /p h=请输小时:
- set /p m=请输分钟:
- set "nowh=%time:~0,2%"
- set "nowm=%time:~3,2%"
- echo %nowh%
- echo %nowm%
- if %nowh% equ %h% (
- set /a "t=(m-nowm)*60"
- ) else if %nowm% gtr %m% (
- set /a "t=(h-nowh-1)*3600+(60-nowm+m)*60"
- ) else (
- set /a "t=(h-nowh)*3600+(m-nowm)*60"
- )
- echo shutdown /s /t %t%
- goto :20
复制代码
作者: mzzyb 时间: 2023-7-14 10:00
回复 2# Batcher
谢谢版主,不懂就问:第6和第22行 goto :20加:和不加:有什么区别?
认真看了下,你的代码只是简化了我的代码,我想知道,为什么我的在我机子上执行不出来~~
作者: Batcher 时间: 2023-7-14 10:05
回复 3# mzzyb
你的思路改成这样试试:- @echo off
- setlocal enabledelayedexpansion
-
- :20
- echo (1设置自动关机)(2取消自动关机)
- set /p g=请输入选项:
- if %g% equ 2 (
- echo shutdown /a
- goto :20
- )
- set /p h=请输小时:
- set /p m=请输分钟:
- set "nowh=%time:~0,2%"
- set "nowm=%time:~3,2%"
- echo %nowh%
- echo %nowm%
- if %nowh% equ %h% (
- set /a "t1=(m-nowm)*60"
- echo shutdown /s /t !t1!
- ) else if %nowm% gtr %m% (
- set /a "t2=(h-nowh-1)*3600+(60-nowm+m)*60"
- echo shutdown /s /t !t2!
- ) else (
- set /a "t3=(h-nowh)*3600+(m-nowm)*60"
- echo shutdown /s /t !t3!
- )
- goto :20
复制代码
作者: mzzyb 时间: 2023-7-14 10:41
回复 4# Batcher
你的代码能执行成功,我只是想知道,为什么你那样写能执行成功,我那样写就不行,其中的原理是什么 ,或者说有没有参考网页,网址发我下,我自己去看,谢谢了
作者: Batcher 时间: 2023-7-14 10:42
回复 5# mzzyb
参考:批处理中的变量延迟扩展
http://bbs.bathome.net/thread-2899-1-1.html
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |