[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

请问各位大佬:
我想做一个进程监控的批处理。
比如:
bat挂着运行 只要指定的exe进程一运行就执行下面命令 ,监测不到指定exe就不执行,然后同样的进程pid只要执行一次下面命令就行.等全部执行完了又实施监控进程pid改变又执行下面命令 重复这样。有大佬帮帮出一段吗

  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就可以,以上代码是做个通用模块,需要自己修改参数,不提供额外技术支持。
逍遥@浪子@反病毒
http://hi.baidu.com/luckboy039

TOP

回复 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. )
复制代码
测试代码之前请做好备份

TOP

用windows内核函数
PsSetCreateProcessNotifyRoutine
更加精确?

TOP

回复  759503140
ShowCode 发表于 2024-7-19 08:57



    想问问 如何监视进程然后获取指定名字进程的PID,然后执行下一步,循环执行,但是同样PID只执行一次就行 。

TOP

不熟悉命令,试试
  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
复制代码
bat小白,请多指教!谢谢!

TOP

返回列表