Board logo

标题: 【分享】改良版的软件监控处理(本人处女作,不要笑)! [打印本页]

作者: zcyzzzm     时间: 2008-10-14 22:39    标题: 【分享】改良版的软件监控处理(本人处女作,不要笑)!

初学批处理,搜索到了这个论坛,发现批处理简单的代码还能完成那么多的功能,有点痴迷了,呵呵,我做的第一个处理文件,贴出来大家分析一下,希望大家能够指导一下,进一步改良。。。衷心和大家交朋友。。。。
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::作用:批处理监控软件是否打开,如果关闭了则打开它::::::::::::::::::::::::::::
:::::::::::::::::::一定要注意不能将更新软件和批处理文件的目录名称带“空格”等::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off
chcp 936

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::这里设置可以进行修改,其他代码不要改变,开始:::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

::::::::::::::::设置定时监控的路径(如果批处理和监控程序在同一目录,则不需要修改)
set zcy_dir=%cd%
::::::::::::::::设置定时监控的程序名称
set zcy_name=悠悠网站数据更新.exe
::::::::::::::::设置定时监控的的时间间隔(单位:秒),如果为0则不重复监控(这时可以将这个批处理放到计划任务中,设置每3分钟打开一次)
set zcy_miao=240
::::::::::::::::设置监控前关闭进程的总次数(防止软件长时间开,软件死锁)
set zcy_zong_cishu=30

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::这里设置可以进行修改,其他代码不要改变,结束:::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::



@echo off
@echo
@echo 作用:批处理监控软件是否打开,如果关闭了则打开它
@echo
setlocal enabledelayedexpansion
set zcy_cishu=0

:::::::::::::::::::查看程序是否运行
:0
tasklist |find /i "%zcy_name%"
if %errorlevel%==0 (goto 1) else (goto 2)
exit

:::::::::::::::::::程序已经运行的处理函数
:1
echo “%zcy_name%”程序正在运行!
set /a zcy_cishu=%zcy_cishu%+1
set  /a zcy_cishu2=%zcy_zong_cishu%-%zcy_cishu%
echo 防死锁关闭%zcy_name%进程,控制总次数:%zcy_zong_cishu%,剩余次数:%zcy_cishu2%
:::::::::::::::::::关闭进程
if %zcy_cishu% GEQ %zcy_zong_cishu% set zcy_cishu=0 & echo 防死锁关闭%zcy_name%进程 & ntsd -c q -pn "%zcy_name%" & ping -n 5 127.0.0.1 >nul & goto 2
if %zcy_miao%==0 (goto 10) else (goto 4)
exit

:::::::::::::::::::程序没有运行的处理函数
:2
echo “%zcy_name%”程序没有运行,先判断文件是否存在,然后尝试打开...
if exist %zcy_dir%\%zcy_name% (goto 3)
if %zcy_miao%==0 (goto 10) else (goto 4)
exit

:::::::::::::::::::启动程序函数
:3
start %zcy_name%
if %zcy_miao%==0 (goto 10) else (goto 4)
exit

:::::::::::::::::::延时进入循环
:4
set zcy_ii=0
set zcy_oo=0
:::::::::::::::::::10秒显示一次
set /a zcy_jiange=10
set /a zcy_jiange2=zcy_jiange+1
echo 延时 %zcy_miao% 秒 再次监控!
echo 倒计时(每%zcy_jiange%秒显示一次):
echo %zcy_miao%

:::::::::::::::::::延时进入循环,倒计时显示
:5
@echo off
ping 127.0.0.1 -n %zcy_jiange2% >nul 2>nul
set /a zcy_ii=%zcy_ii%+%zcy_jiange%
set /a shu=%zcy_miao%-%zcy_ii%
echo %shu%
if %shu% GEQ 0 goto 5
cls
goto 0
exit


:::::::::::::::::::倒计时关闭函数
:10
set /a all=5
@echo 倒计时开始,窗口 %all% 秒后关闭!

:time
set /a h+=1
@echo %time1%
set /a time1=%all%-%h%
ping -n 2 127.0.0.1 >nul
if %time1%=="0" goto b
if %time1% gtr 0 goto time

:b
exit

作者: HAT     时间: 2008-10-14 22:50
只保留第一个@echo off,其他的@和echo off全部删除。
遇到带有空格的目录,加上双引号即可。

建议多看基础教程,更快提到自己的水平。
Good luck!

  Quote:
批处理的教学
http://www.cn-dos.net/forum/viewthread.php?tid=2338

批处理最完整人性化教程
http://www.cn-dos.net/forum/viewthread.php?tid=18482

批处理新手FAQ整理
http://www.cn-dos.net/forum/viewthread.php?tid=34049

中国DOS联盟批处理室经典帖子合集
http://www.cn-dos.net/forum/viewthread.php?tid=31551


作者: zcyzzzm     时间: 2008-10-14 23:06
谢谢,我会继续努力,。。。。
作者: ccily2701     时间: 2008-10-15 09:58
好贴咋就没人顶呢.....我顶....     



学习了.