DOS中判断进程是否存在的方法

 我来答
科创17
2022-05-26 · TA获得超过5864个赞
知道小有建树答主
回答量:2846
采纳率:100%
帮助的人:169万
展开全部

DOS中判断进程是否存在的方法

  检测进程是否存在,并做出预定动作。

  tasklist /nh>d:\tddown~1\1.txt

  find /i "QQ.exe" d:\tddown~1\1.txt

  if 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 off

  tasklist|find /i "qq.exe" ||exit

  taskkill /im qq.exe /f

  b)、把进程列表放在A文档里面然后再用FIND查找代码:

  @echo off

  tasklist>C:\a.txt

  find "QQ.exe" C:\a.txt&&taskkill /f /im "QQ.exe"

  c)、如果不是要循环监控的话,直接taskkill。。。反正最终目的是不要有QQ进程。

  每隔20秒自动检测进程列表,自动关闭notepad.exe。

  @echo off

  :1

  tasklist | find "notepad.exe" >>c:\notepad.luowei

  if exist c:\notepad.luowei taskkill /f /im notepad.exe

  ping 127.1 -n 20 >nul 2>nul

  goto 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 off

  rem 重启应该使用-r

  tasklist|findstr /i "explorer.exe" ||shutdown -r -t 50

  rem willsort斑竹说过,ping的第一条消息是不需要等待的,所以延时30秒,应该用-n 31

  ping 127.1 -n 31 >nul 2>nul

  rem 不必使用循环,call一下自己就行了

  call %0

  检测系统的一个进程是否存在的脚本, 如果不存在,就自动关机.

  tasklist >tasklist.txt

  rem 进程名如 smss.exe

  find /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 语句做 监测

  :start

  tasklist >tasklist.txt

  find /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 :p

  find是不是不能用for啊?请高人指点。

  ---------

  tasklist | findstr "1.exe 2.exe 3.exe"&&goto :p

  for不会接受传递自tasklist的数据,它是打in来定义的

  ---------

  @echo off

  set 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\bin

  title 进程分析自定义结束进程程序

  echo 按任意键开始分析

  pause>nul

  set space=

  echo.

  echo 程序分析如下:

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式