bat的定时关机程序

bat的定时关机程序

@ECHO off
TITLE greaterthanme-实现定时关机、注销、重启、锁定等功能。

:start
CLS
COLOR 1f
rem 使用COLOR命令对控制台输出颜色进行更改
MODE con: COLS=41 LINES=18
rem MODE语句为设定窗体的宽和高
set tm1=%time:~0,2%
set tm2=%time:~3,2%
set tm3=%time:~6,2%
ECHO %date% %tm1%点%tm2%分%tm3%秒
ECHO =========================================
ECHO 请选择要进行的操作,然后按回车
ECHO ———————————————
ECHO.
ECHO 1. 定时关机
ECHO 2. 倒计时关机
ECHO 3. 删除定时关机任务
ECHO 4. 查看任务状态
ECHO 5. 刷新当前时间
ECHO 6. 重新启动
ECHO 7. 锁定计算机
ECHO 8. 注销
ECHO 9. 退出
ECHO.

:cho
SET Choice=
SET /P Choice=选择:
rem 设定变量"Choice"为用户输入的字符
IF NOT "%Choice%"=="" SET Choice=%Choice:~0,1%
rem 如果输入大于1位,取第1位,比如输入132,则返回值为1
ECHO.
IF /I "%Choice%"=="1" GOTO SetHour
IF /I "%Choice%"=="2" GOTO outtime
IF /I "%Choice%"=="3" GOTO delAt
IF /I "%Choice%"=="4" GOTO view
IF /I "%Choice%"=="5" GOTO start
IF /I "%Choice%"=="6" GOTO restart
IF /I "%Choice%"=="7" GOTO lock
IF /I "%Choice%"=="8" GOTO logoff
IF /I "%Choice%"=="9" GOTO end
rem 为避免出现返回值为空或含空格而导致程序异常,需在变量外另加双引号
rem 注意,IF语句需要双等于号
rem 如果输入的字符不是以上数字,将返回重新输入
ECHO 选择无效,请重新输入
ECHO.
GOTO cho

:SetHour
CLS
ECHO.
SET ask=
SET /p ask=是否设定为每天执行关机命令(y/n):
IF NOT "%ask%"=="" SET ask=%ask:~0,1%
IF /I "%ask%"=="y" GOTO yes
IF /I "%ask%"=="n" GOTO no
GOTO SetHour

:yes
ECHO 请指定24小时制式时间,格式为 小时:分钟
SET shutdowntime=
SET /p shutdowntime=输入:
at %shutdowntime% /every:M,T,W,Th,F,S,Su tsshutdn 0 /delay:0 /powerdown >nul
rem 设定为每周的星期一至星期日,即为每天
IF NOT errorlevel 1 GOTO ok
rem 如果输入正确,就执行ok段的语句
ECHO %shutdowntime% 不是标准的时间格式,请重新输入
ECHO.
GOTO yes

:no
ECHO 请指定24小时制式时间,格式为 小时:分钟
SET shutdowntime=
SET /p shutdowntime=输入:
at %shutdowntime% tsshutdn 0 /delay:0 /powerdown >nul
IF NOT errorlevel 1 GOTO ok
ECHO %shutdowntime% 不是标准的时间格式,请重新输入
ECHO.
GOTO no

:ok
ECHO.
SET h=%shutdowntime:~1,1%
SET ah=%shutdowntime:~0,1%
SET am=%shutdowntime:~2,2%
SET bh=%shutdowntime:~0,2%
SET bm=%shutdowntime:~3,2%
IF "%h%"==":" (
SET HM=%ah%时%am%分
) ELSE (
SET HM=%bh%时%bm%分)
rem 如果输入h:mm则HM=h时mm分,否则HM=hh时mm分
IF /I "%ask%"=="y" ECHO 系统将于每天的%HM%关闭
IF /I "%ask%"=="n" ECHO 系统将于%HM%关闭
ECHO 设定完毕! 按任意键继续...
PAUSE >nul
GOTO start

:outtime
CLS
ECHO.
ECHO 请输入倒计时秒数
ECHO ————————
ECHO (设定后要取消,单击"确定"后按Ctrl+C键两次)
SET timed=
SET /p timed=输入:
tsshutdn %timed% /delay:0 /powerdown >nul
IF not errorlevel 1 GOTO ok
ECHO %timed% 是无效的关机时间,请重新输入
ECHO.
GOTO outtime

:delAt
cls
echo.
at /del /y
echo 定时关机任务已取消,按任意键继续...
pause >nul
GOTO start

:view
MODE con: COLS=85 LINES=18
COLOR 70
ECHO.
at
ECHO 按任意键继续...
PAUSE >nul
GOTO start

:restart
shutdown -r -t 0

:lock
rundll32.exe user32.dll,LockWorkStation
goto start

:logoff
logoff

:end
exit
### 回答1: 以下是一个简单的Windows定时关机程序: 1. 打开“开始”菜单,输入“cmd”,然后按“Enter”键打开命令提示符窗口。 2. 在命令提示符窗口中输入“shutdown -s -t 3600”,其中3600表示关机延迟时间,单位为秒。 3. 再次按下“Enter”键,即可完成定时关机程序的设置。 ### 回答2: 要写一个Windows定时关机程序,可以使用批处理脚本或编程语言来实现。以下是一个使用批处理脚本的示例: 1. 首先,打开文本编辑器(如记事本)并创建一个新的文本文件。 2. 在文本文件中输入以下命令: ```batch @echo off echo 正在设置定时关机... set /p hours=请输入定时时间(小时): set /p minutes=请输入定时时间(分钟): set /p seconds=请输入定时时间(秒): set /a total_time=hours*3600 + minutes*60 + seconds timeout %total_time% shutdown /s /t 0 ``` 3. 将上述文本保存为一个批处理脚本文件,例如shutdown.bat(注意扩展名必须是.bat)。 4. 双击运行该脚本文件,程序将提示您输入定时关机的时间(以小时、分钟和秒为单位)。 5. 输入所需的时间后,计算机将等待指定的时间长度后自动关机。 这个批处理脚本的工作原理是: - 关闭脚本的输出显示(@echo off)。 - 用户被提示输入定时时间(小时、分钟和秒)。 - 输入的时间被转换为秒(total_time = hours * 3600 + minutes * 60 + seconds)。 - 程序等待指定的时间长度(timeout %total_time%)。 - 最后,计算机执行关机命令(shutdown /s /t 0),将计算机关闭。 希望这个简单的批处理脚本可以满足您的Windows定时关机需求。如果您喜欢编程,也可以使用其他编程语言(如Python、C#等)来实现更复杂的定时关机程序。 ### 回答3: 要编写一个Windows定时关机程序,可以使用C#编程语言和Windows API来实现。下面是一个示例程序的代码: ```csharp using System; using System.Runtime.InteropServices; class Program { [DllImport("user32.dll")] public static extern int MessageBox(int hWnd, string text, string caption, int type); [DllImport("user32.dll")] public static extern bool ExitWindowsEx(uint uFlags, uint dwReason); static void Main(string[] args) { Console.WriteLine("请输入关机时间(单位:分钟):"); int minutes = int.Parse(Console.ReadLine()); int milliseconds = minutes * 60 * 1000; // 获取系统当前时间 DateTime currentTime = DateTime.Now; // 计算关机时间 DateTime shutdownTime = currentTime.AddMilliseconds(milliseconds); // 显示关机时间 Console.WriteLine("将在 {0} 关机", shutdownTime); // 等待定时关机 while (DateTime.Now < shutdownTime) { // 每秒钟检查一次关机时间是否到达 System.Threading.Thread.Sleep(1000); } // 进行关机操作 ExitWindowsEx(0x00000008 | 0x00000001, 0); // 显示关机消息 MessageBox(0, "计算机即将关机", "关机提示", 0); } } ``` 该程序首先会要求用户输入一个关机时间(以分钟为单位),然后通过计算得到将来的关机时间,并且在控制台上显示这个关机时间。程序会在计算机时间达到关机时间之前等待。一旦时间到达,程序会调用Windows API函数进行关机操作,并且在屏幕上显示一个关机提示消息框。 请注意,此示例仅适用于Windows操作系统,并且可能需要管理员权限才能成功执行关机操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值