您的位置:首页 > 其它

实现后台检控并关闭进程的批处理

2011-03-28 15:15 330 查看
平常批处理运行的时候,有个dos窗口,很不美观,只要用个小命令就可以隐藏批处理运行了
一个非常简单的小脚本 假设你的批处理是C:\xxx.bat 那么在记事本里写入
set ws=WScript.CreateObject("WScript.Shell" ws.Run "C:\xxx.bat",0
保存为一个以vbs为扩展名的文件 运行它就可以在后台运行你的批处理了

检测进程是否存在,并做出预定动作。
tasklist /nh>d:\tddown~1\1.txtfind /i "QQ.exe" d:\tddown~1\1.txtif ERRORLEVEL 1 (echo qq.exe不存在) else (echo qq.ex存在)------------第二个-----------tasklist /nh|find /i "QQa.exe"if ERRORLEVEL 1 (echo qqa.exe不存在) else (echo qqa.exe存在)检查电脑里有没QQ.EXE进程,有则自动结束
a)、先用tasklist 输入进程列表给find ,让find找出qq.exe进程,如果找到,那执行下面的结束操作,找不到就退出bat@echo offtasklist|find /i "qq.exe" ||exittaskkill /im qq.exe /fb)、把进程列表放在A文档里面然后再用FIND查找代码:@echo offtasklist>C:\a.txtfind "QQ.exe" C:\a.txt&&taskkill /f /im "QQ.exe"c)、如果不是要循环监控的话,直接taskkill。。。反正最终目的是不要有QQ进程。

每隔20秒自动检测进程列表,自动关闭notepad.exe。@echo off:1tasklist | find "notepad.exe" >>c:\notepad.luoweiif exist c:\notepad.luowei taskkill /f /im notepad.exe ping 127.1 -n 20 >nul 2>nulgoto 1检测explorer.exe进程检测explorer.exe进程,发现有这个进程就退出,没有就从E盘复制一个到系统目录,再运行。我系统经常进不去,发现就是被病毒发explorer.exe文件删了。tasklist|find /i "explorer.exe"||copy /y e:\drivers\explorer.exe %systemroot%\&&start /b explorer.exe每30秒检测一个进程的运行,如果不存在电脑重启。@echo offrem 重启应该使用-rtasklist|findstr /i "explorer.exe" ||shutdown -r -t 50rem willsort斑竹说过,ping的第一条消息是不需要等待的,所以延时30秒,应该用-n 31ping 127.1 -n 31 >nul 2>nulrem 不必使用循环,call一下自己就行了call %0检测系统的一个进程是否存在的脚本, 如果不存在,就自动关机.tasklist >tasklist.txtrem 进程名如 smss.exefind /i tasklist.txt "进程名" if errorlevel 1 ((del /q tasklist.txt)&(goto end))if errorlevel 0 ((del /q tasklist.txt)&(echo 有你想要的进程)&pause&exit):end shutdown -s -t 1不过这样只有这个bat运行一次检测一次,没有实时监控
用Goto 语句做 监测:starttasklist >tasklist.txtfind /i tasklist.txt "Explorer.exe" if errorlevel 1 ((del /q tasklist.txt)&(goto end))if errorlevel 0 ((goto start)):end shutdown -s -t 50这样一来 如果Explorer.exe 进程,存在, 就是死循环.直到 Explorer.exe 进程结束, 就执行 关机命令.但这样有个缺点 CPU 100%

检测多个特定进程
我想实现这样一个功能:用tasklist列出当前进程清单,然后用find来搜索进程中是否含有1.exe,2.exe,3.exe......(假设啊)如果清单中含有其中一个就执行某个操作。我想用FOR来实现循环可是怎么试也不行啊!!我是这样试的:tasklist | for %%j in (1.exe,2.exe,3.exe) do find "%%j" && goto :pfind是不是不能用for啊?请高人指点。---------tasklist | findstr "1.exe 2.exe 3.exe"&&goto :pfor不会接受传递自tasklist的数据,它是打in来定义的 ---------@echo offset 1.exe=被定义的程序set 2.exe=被定义的程序set 3.exe=被定义的程序

for /f "tokens=1" %%i in ('tasklist /NH') do ( if defined %%i echo %%i)pause>nul---------

检测和退出进程问题
A B 两进程存在,若A不存在,则退出B。每隔N秒循环检测一次,退出B后,退出程序tasklist|findstr /i "A.exe" ||(taskkill /im B.exe /t /f&exit)列出当前运行的进程,可自定义说明内容,手动关闭进程。可改良后自动判断处理进程。@echo off PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\HPQ\IAM\bintitle 进程分析自定义结束进程程序echo 按任意键开始分析 pause>nulset space= echo. echo 程序分析如下: echo ========================================================================= echo. echo 进程名称 进程说明 echo.call tasklist.exe
::以下定义程序说明,自己可以补充。 set System=『系统进程』 set smss.exe=『系统进程』调用对话管理子系统和负责操作你系统的对话 set csrss.exe=『系统进程』管理Windows图形相关任务 set winlogon.exe=『系统进程』 set services.exe=『系统进程』管理启动和停止服务 set lsass.exe=『系统进程』用于本地安全和登陆策略 set svchost.exe=『系统进程』用来运行动态链接库dll文件 set ctfmon.exe=・提供语音识别、手写识别等 set conime.exe=・输入法编辑器相关程序
::主程序 setlocal enabledelayedexpansion for /f "tokens=1" %%i in ('tasklist /NH') do ( set str=%%i %space% set str=!str:~0,20! if defined %%i (echo !str! !%%i!) else echo !str! ‖根据进程自已输进程名) echo ========================================================================= echo 分析完毕... :goto titletitle 结束进程set /p run=请输入要结束的程序名 ::ntsd -c q -pn %run%taskkill /f /t /im %run% pause>nul 先分析PID和进程。然后自定义结束转载自http://wt138.blog.hexun.com/28661823_d.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: