找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 15775|回复: 5

[文本处理] 批处理怎么监控进程,监控到进程存在之后才执行下面命令

[复制链接]
发表于 2024-7-17 16:44:45 | 显示全部楼层 |阅读模式
请问各位大佬:
我想做一个进程监控的批处理。
比如:
bat挂着运行 只要指定的exe进程一运行就执行下面命令 ,监测不到指定exe就不执行,然后同样的进程pid只要执行一次下面命令就行.等全部执行完了又实施监控进程pid改变又执行下面命令 重复这样。有大佬帮帮出一段吗
发表于 2024-7-18 13:11:55 | 显示全部楼层
  1. @echo off
  2. :begin
  3. ::延迟2秒
  4. ping -n 2 127.1>nul
  5. ::进程检测1111.exe是否存在,不存在则跳转begin段,存在则结束进程到begin段
  6. tasklist /nh | findstr /i /c:"1111.exe"
  7. if errorlevel 1 ( goto begin ) else ( taskkill /f /im 1111.exe & goto begin )
复制代码
用批出理来监控太费了,建议还是用VBS,写了do loop+sleep就可以,以上代码是做个通用模块,需要自己修改参数,不提供额外技术支持。
发表于 2024-7-19 08:57:36 | 显示全部楼层
回复 1# 759503140
  1. @echo off
  2. :Loop
  3. REM 延迟2秒
  4. timeout /nobreak /t 2 >nul
  5. REM 监控进程 759503140.exe 是否存在
  6. tasklist | findstr /i /c:"759503140.exe" >nul
  7. if errorlevel 1 (
  8.     goto :Loop
  9. ) else (
  10.     echo 执行下面命令
  11.     REM 需要执行什么就写什么
  12.     pause
  13. )
复制代码
发表于 2024-7-19 22:16:03 | 显示全部楼层
用windows内核函数
PsSetCreateProcessNotifyRoutine
更加精确?
 楼主| 发表于 2024-7-20 23:21:08 | 显示全部楼层
回复  759503140
ShowCode 发表于 2024-7-19 08:57



    想问问 如何监视进程然后获取指定名字进程的PID,然后执行下一步,循环执行,但是同样PID只执行一次就行 。
发表于 2024-7-21 02:16:34 | 显示全部楼层
不熟悉命令,试试
  1. @echo off

  2. set p=ffmpeg.exe

  3. :loop
  4. timeout 2
  5. for /f "tokens=1-2" %%a in ('tasklist /FI "IMAGENAME eq %p%" ^|find /i "%p%"') do (
  6.         if not defined _"%%b" (
  7.                 set _"%%b"=1
  8.                 echo pid=%%b
  9.                 rem 命令代码
  10.         )
  11. )
  12. goto :loop
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 22:07 , Processed in 0.019226 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表