找人写个批处理,用于自动关机

为了限制自己假期使用电脑的时间,麻烦高手写个批处理实现以下功能1.记录当天的开机时间,满4个小时自动关机2.读取当前时间,超过11:00PM自动关机能不能不copy?对于... 为了限制自己假期使用电脑的时间,麻烦高手写个批处理实现以下功能
1.记录当天的开机时间,满4个小时自动关机
2.读取当前时间,超过11:00PM自动关机
能不能不copy?对于第二个,这样我重启一下就可以了...
展开
 我来答
fcefxm
2011-01-19 · TA获得超过2198个赞
知道大有可为答主
回答量:2301
采纳率:0%
帮助的人:2696万
展开全部
开始--运行--输入--shutdown /s /t 60
/s 意思是 关机
/r 意思是 重启
/t 意思是 时间(以秒计算)

或者下面的保存为
.bat格式
运行就可以了

@ECHO off
TITLE 自动关机程序
: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
wltt421
2011-01-26 · TA获得超过440个赞
知道小有建树答主
回答量:304
采纳率:0%
帮助的人:267万
展开全部
'把原来的答案改了一下:

Dim t
Set ws = CreateObject("wscript.shell")
wscript.CreateObject("scripting.filesystemobject").createtextfile("C:\WINDOWS\shuttime.bat").Write "set a=0" & vbCrLf & "if exist ""C:\WINDOWS\@#E%date:~0,10%.shuttime"" for /f %%a in (C:\WINDOWS\@#E%date:~0,10%.shuttime) do set a=%%a" & vbCrLf & ":a" & vbCrLf & "set /a a+=1" & vbCrLf & ">""C:\WINDOWS\@#E%date:~0,10%.shuttime"" echo %a%" & vbCrLf & "if %a%==235 msg %username% /time:5 还有5分钟关机!" & vbCrLf & "if %a%==239 msg %username% /time:5 还有1分钟关机!请保存所有正在运行的程序,准备关机,未保存的数据将丢失!" & vbCrLf & "if %a% geq 240 shutdown -s" & vbCrLf & "ping /n 60 127.1>nul" & vbCrLf & "goto a"
ws.run "shuttime", vbHide
Do
wscript.sleep 60
t = Left(Time, InStr(Time, ":") - 1)
If t > 22 Or t < 8 Then
ws.popup "现在太晚,即将关机!", 10
wscript.sleep 10
ws.run "shutdown -s"
End If
Loop

'保存为 vbs 类型文件。并把它复制到: “C:\Documents and Settings\All Users\「开始」菜单\程序\启动” 里,也就是设为开机启动,就可以了。
'用批处理有难度!所以用了vbs脚本。
'vbs 脚本设为开机启动可能会被杀毒软件删掉或拒绝访问。注意添加信任。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
麦兜Terran
2011-01-18 · TA获得超过2571个赞
知道小有建树答主
回答量:1786
采纳率:0%
帮助的人:1170万
展开全部
x=split(timer,".")(0)+3600*4
do while timer < x
if timer >= x then createobject("wscript.shell").run "shutdown -s -t -f 0"
loop
保存为vbs类型文件

do
if left(time,2) >= 11 then createobject("wscript.shell").run "shutdown -s -t -f 0":exit do
loop
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
旭日乘风
2011-01-18
知道答主
回答量:5
采纳率:0%
帮助的人:5856

参考资料: http://wenku.baidu.com/view/7601b368a98271fe910ef90e.html

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式