标题: [文本处理] 批处理怎么监控进程,监控到进程存在之后才执行下面命令 [打印本页]
作者: 759503140 时间: 2024-7-17 16:44 标题: 批处理怎么监控进程,监控到进程存在之后才执行下面命令
请问各位大佬:
我想做一个进程监控的批处理。
比如:
bat挂着运行 只要指定的exe进程一运行就执行下面命令 ,监测不到指定exe就不执行,然后同样的进程pid只要执行一次下面命令就行.等全部执行完了又实施监控进程pid改变又执行下面命令 重复这样。有大佬帮帮出一段吗
作者: luckboy45 时间: 2024-7-18 13:11
- @echo off
- :begin
- ::延迟2秒
- ping -n 2 127.1>nul
- ::进程检测1111.exe是否存在,不存在则跳转begin段,存在则结束进程到begin段
- tasklist /nh | findstr /i /c:"1111.exe"
- if errorlevel 1 ( goto begin ) else ( taskkill /f /im 1111.exe & goto begin )
复制代码
用批出理来监控太费了,建议还是用VBS,写了do loop+sleep就可以,以上代码是做个通用模块,需要自己修改参数,不提供额外技术支持。
作者: ShowCode 时间: 2024-7-19 08:57
回复 1# 759503140 - @echo off
- :Loop
- REM 延迟2秒
- timeout /nobreak /t 2 >nul
- REM 监控进程 759503140.exe 是否存在
- tasklist | findstr /i /c:"759503140.exe" >nul
- if errorlevel 1 (
- goto :Loop
- ) else (
- echo 执行下面命令
- REM 需要执行什么就写什么
- pause
- )
复制代码
作者: Five66 时间: 2024-7-19 22:16
用windows内核函数
PsSetCreateProcessNotifyRoutine
更加精确?
作者: 759503140 时间: 2024-7-20 23:21
回复 759503140
ShowCode 发表于 2024-7-19 08:57
想问问 如何监视进程然后获取指定名字进程的PID,然后执行下一步,循环执行,但是同样PID只执行一次就行 。
作者: 77七 时间: 2024-7-21 02:16
不熟悉命令,试试- @echo off
-
- set p=ffmpeg.exe
-
- :loop
- timeout 2
- for /f "tokens=1-2" %%a in ('tasklist /FI "IMAGENAME eq %p%" ^|find /i "%p%"') do (
- if not defined _"%%b" (
- set _"%%b"=1
- echo pid=%%b
- rem 命令代码
- )
- )
- goto :loop
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |