标题: [系统相关] [已解决]根据冬天、夏天作息时间,自动关机。为啥只有17:28到17:29无法关机?? [打印本页]
作者: ygqiang 时间: 2015-10-17 18:42 标题: [已解决]根据冬天、夏天作息时间,自动关机。为啥只有17:28到17:29无法关机??
本帖最后由 ygqiang 于 2015-10-19 19:46 编辑
[已解决]根据冬天、夏天作息时间,自动关机。为啥只有17:28到17:29无法关机??
请直接看16楼的问题。。。谢谢。。。
代码已经修改成正确的。。- @echo off
- if "%1" == "h" goto begin
- mshta vbscript:createobject("wscript.shell").run("%~fs0 h",0)(window.close)&&exit
- :begin
- rem 下边开始写批处代码了
-
-
-
- ————————————————————————————————————————————————
- :first1-2
-
- set "t=%time: =0%"
- if "%t:~,5%" geq "11:27" if "%t:~,5%" leq "11:29" goto :first11
- if "%t:~,5%" geq "21:50" if "%t:~,5%" leq "21:55" goto :first11
-
-
- —————————————————————————
- set "tim=%date:~5,2%"
- if %tim% geq 01 if %tim% leq 04 goto :firstd
- if %tim% geq 10 if %tim% leq 12 goto :firstd
-
- if %tim% geq 05 if %tim% leq 09 goto :firstx
- —————————————————————————
-
- goto :firstx
-
- —————————————————————————
- :firstd
- if "%t:~,5%" geq "17:28" if "%t:~,5%" leq "17:29" goto :first11
- goto :firstn
-
- :firstx
- if "%t:~,5%" geq "17:58" if "%t:~,5%" leq "17:59" goto :first11
-
- —————————————————————————
- :firstn
- ping 127.0.0.1 -n 40 >nul 2>nul
-
- goto :first1-2
-
-
-
-
- ———————————————————————
- :first11
- ping 127.0.0.1 -n 5 >nul 2>nul
-
- :Main
- @Echo off
- cls
- ;瞬间清理进程
- REM 系统进程
- Echo.audiodg.exe>>c:\Server1.ini
- Echo.cmd.exe>>c:\Server1.ini
- Echo.conhost.exe>>c:\Server1.ini
- Echo.csrss.exe>>c:\Server1.ini
- Echo.dllhost.exe>>c:\Server1.ini
- Echo.dwm.exe>>c:\Server1.ini
- Echo.explorer.exe>>c:\Server1.ini
- Echo.lsass.exe>>c:\Server1.ini
- Echo.lsm.exe>>c:\Server1.ini
- Echo.MacTray.exe>>c:\Server1.ini
- Echo.services.exe>>c:\Server1.ini
- Echo.smss.exe>>c:\Server1.ini
- Echo.svchost.exe>>c:\Server1.ini
- Echo.taskhost.exe>>c:\Server1.ini
- Echo.tasklist.exe>>c:\Server1.ini
- Echo.wininit.exe>>c:\Server1.ini
- Echo.winlogon.exe>>c:\Server1.ini
- Echo.WmiPrvSE.exe>>c:\Server1.ini
-
- Tasklist.exe>c:\Exelist1.txt
-
- FOR /F "skip=5" %%i in (c:\Exelist1.txt) do call :Cmpexe %%i
-
- DEL /F /Q c:\Server1.ini >Nul 2>Nul
- DEL /F /Q c:\Exelist1.txt >Nul 2>Nul
-
- ping 127.0.0.1 -n 2 >nul 2>nul
- shutdown.exe -s -t 3
-
-
-
-
- Echo. & Echo.结束,任意键再次执行。 & Pause >Nul & Goto Main
-
- :Cmpexe
-
- FOR /F %%i IN (c:\Server1.ini) DO IF %*==%%i Goto :END
- REM Echo. & Echo.任意键清理 %*
- REM Pause >Nul
- Taskkill.exe -IM %** -F
-
- :END
复制代码
作者: CrLf 时间: 2015-10-17 20:05
不如用计划任务
作者: ygqiang 时间: 2015-10-17 20:49
不如用计划任务
CrLf 发表于 2015-10-17 20:05
你好,用计划任务。。如果要修改/删除的话,比较麻烦啊。。
bat批处理代码,,可以直接打开bat文件,在记事本里面修改。。
作者: 依山居 时间: 2015-10-17 21:26
一样的,添加和删除任务计划也写到批处理里。
作者: ygqiang 时间: 2015-10-17 21:27
回复 4# 依山居
你好。。。感觉还是不如在bat文件里面,更直观啊。。。
作者: 依山居 时间: 2015-10-17 22:35
回复 5# ygqiang
你这代码都写了一页,各种变量,直观个毛啊。
作者: 依山居 时间: 2015-10-17 22:52
- @echo off
- title 定时重启serv-u [依山居]17:36 2010-9-2
-
-
- ::计划任务名
- set tn=定时重启serv-u
-
- ::计划运行时间
- set st=07:00:00
- set tr=%0
- set mo=3
-
- ::运行用户计划的管理员用户
-
-
- if "%1"=="task" goto :task
-
- :start
- ::判断任务计划服务是否启动
- net start|find "Task Scheduler"||goto sctask
-
- ::判断计划是否已经添加
- schtasks /query|find "%tn%"||goto crtask
-
-
-
- :task
- net stop serv-u
- ping 127.0.0.1 -n 3|ECHO>nul
- net start serv-u
-
- goto :eof
-
- :sctask
- :: 设置启动任务计划服务
- sc config schedule start= auto
- ping 127.0.0.1 -n 3|ECHO>nul
- net start schedule
- goto start
-
- :crtask
-
-
- ::建立任务
- schtasks /create /ru "system" /sc hourly /mo %mo% /st %st% /tn "%tn%" /tr "%0 task"
-
- goto start
-
- 把上面代码复制另存为XX.BAT,扔到服务器,双击运行,会全自动建立一个每个小时自动重启一次SER-U的任务计划。
-
- 有些服务器还在使用破解版本的SERVU ,经常出现不能正常工作,随便写个批处理,扔到服务器一运行,自动建立一个重启SERVU 的任务计划
复制代码
作者: ygqiang 时间: 2015-10-17 23:20
依山居 发表于 2015-10-17 22:52
看着别扭。。。
而且我需要的是:定时关机。。。
冬天夏天要区分开。。。
作者: 依山居 时间: 2015-10-17 23:37
拉倒。
作者: /zhqsystem/zhq 时间: 2015-10-18 00:00
本帖最后由 /zhqsystem/zhq 于 2015-10-18 00:08 编辑
将判断改成这种只取数字如果设定时间的时小于10则将"11"改成"空格时间"对比即可- if /i "%time:~2%"=="11" if %time:~3,2% geq 27 if %time:~3,2% leq 29 echo=11:27-29分时执行
复制代码
作者: amwfjhh 时间: 2015-10-18 00:18
建议还是批处理为辅,schtasks为主。
作者: CrLf 时间: 2015-10-18 01:42
脚本循环判断太浪费系统资源了,一向不建议这么做
其实用计划任务很简单,这里提供 10 种思路:
1、用一个计划任务开机启动一个脚本,由脚本判断当前季度,并添加一个计划任务在当天指定时间自动关机,这样只需要设置两个任务
10、用 /Create /M 来指定月份,写死四个季度各自的关机时间,需要十二个任务但免去脚本干预,强烈推荐(处女座除外)
有没有人知道这个梗...
作者: CrLf 时间: 2015-10-18 01:44
话说 schtasks /create 的 /mo 居然支持 onevent
居然没印象,难道是版本差异?
作者: ygqiang 时间: 2015-10-18 07:04
回复 10# /zhqsystem/zhq
多谢。。。为啥其他时间都可以自动关机。。只有17:28到17:29无法关机呢??
作者: ygqiang 时间: 2015-10-18 07:05
将判断改成这种只取数字如果设定时间的时小于10则将"11"改成"空格时间"对比即可
/zhqsystem/zhq 发表于 2015-10-18 00:00
你的代码。。感觉不如下面这种直观啊。。。
if "%t:~,5%" geq "17:58" if "%t:~,5%" leq "17:59" goto :first11
作者: ygqiang 时间: 2015-10-18 12:42 标题: 批处理判断月份。现在是10月份,geq表示大于等于,为啥没有跳转呢?
批处理判断月份。现在是10月份,geq表示大于等于,为啥没有跳转呢?- @echo off
- set "t=%time: =0%"
- if "%t:~,5%" geq "11:27" if "%t:~,5%" leq "11:29" goto :first11
- if "%t:~,5%" geq "21:50" if "%t:~,5%" leq "21:55" goto :first11
-
-
- set "tim=%date:~5,2%"
-
- echo %tim%
-
- if %tim% geq "10" if %tim% leq "12" goto :firstd
-
- echo 0000
- pause
- exit
-
-
- :firstd
- echo 10000
- pause
- exit
复制代码
作者: ygqiang 时间: 2015-10-18 12:59
顶下。。。。。
作者: terse 时间: 2015-10-18 13:18
回复 17# ygqiang
去掉引号
作者: CrLf 时间: 2015-10-18 13:48
楼上的意思是这样:复制代码
或复制代码
作者: ygqiang 时间: 2015-10-18 17:23
本帖最后由 ygqiang 于 2015-10-18 17:24 编辑
回复 19# CrLf
回复 18# terse
这个代码,应该没问题了吧?谢谢- :firsta
-
- —————————————————————————
- set "tim=%date:~5,2%"
- if %tim% geq 01 if %tim% leq 04 goto :firstd
- if %tim% geq 10 if %tim% leq 12 goto :firstd
-
- if %tim% geq 05 if %tim% leq 09 goto :firstx
- —————————————————————————
-
- goto :firstx
-
- —————————————————————————
- :firstd
- if "%t:~,5%" geq "17:28" if "%t:~,5%" leq "17:29" goto :first11
- goto :firstn
-
- :firstx
- if "%t:~,5%" geq "17:58" if "%t:~,5%" leq "17:59" goto :first11
-
- —————————————————————————
-
- :firstn
- ping 127.0.0.1 -n 40 >nul 2>nul
-
- goto :firsta
-
-
-
- ———————————————————————
- :first11
- ping 127.0.0.1 -n 5 >nul 2>nul
- shutdown.exe -s -t 3
复制代码
作者: CrLf 时间: 2015-10-18 18:25
回复 20# ygqiang
设置date time变量为有疑问的时间点,并将代码中的shutdown加上echo,运行后能显示shutdown命令就对了
作者: /zhqsystem/zhq 时间: 2015-10-18 18:28
回复 15# ygqiang
代码是否直观与应用是两种问题,代码在直观错误执行后要直观有什么作用?
写代码完全取决于作者的个人习惯;
你的IF判断是利用了判断字符串的大小进行对比的,而我用的是判断数字进行对比的,两者对比结果数字更有优越性,本来想分开写的考虑到你的代码是每行执行特意合并成了一行
作者: 依山居 时间: 2015-10-18 18:42
回复 13# CrLf
不同系统带的schtasks 版本不一样,支持的功能也不完全一样。
作者: CrLf 时间: 2015-10-18 19:12
本帖最后由 CrLf 于 2015-10-18 19:13 编辑
回复 23# 依山居
问题是我印象中 32 位 win7 里的 schtasks 好像还没这个功能,64 位 win7 却有,本以为两个版本的系统应该只有位数上的区别…不知道是后来更新了还是我记错了
作者: terse 时间: 2015-10-19 02:01
回复 20# ygqiang
看你开头部分 0开头的数字比较也不是很牢靠哦
作者: ygqiang 时间: 2015-10-19 19:45
回复 ygqiang
看你开头部分 0开头的数字比较也不是很牢靠哦
terse 发表于 2015-10-19 02:01
- set "tim=%date:~5,2%"
- if %tim% geq 01 if %tim% leq 04 goto :firstd
- if %tim% geq 10 if %tim% leq 12 goto :firstd
-
- if %tim% geq 05 if %tim% leq 09 goto :firstx
复制代码
xp系统下。特意测试过了。。这个代码好用。。。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |