批处理监测系统进程问题求助
求助在使用批处理监测 8个进程是否在运行过程中,在win7系统中运行时发现,petro-gsms-station-bus.exe petro-gsms-station-core.exe petro-gsms-station-iot.exe petro-gsms-station-monitor.exe petro-gsms-station-mysqld.exe这5给进程在在运行,但是监测结果却显示已停止运行。有没有大佬帮忙看看是什么原因? mysqld-nt.exeEPS.exeEPSServer.exe这三个进程状态监测就是正常的。@echo offsetlocal enabledelayedexpansion
set "processList=petro-gsms-station-bus.exepetro-gsms-station-core.exepetro-gsms-station-iot.exepetro-gsms-station-monitor.exepetro-gsms-station-mysqld.exemysqld-nt.exeEPS.exeEPSServer.exe "
set "separator=-----------------------------"
:monitorLoop
for %%p in (%processList%) do (
echo(
echo 检查 %%p...
tasklist /nh /fi "imagename eq %%p" | find /i "%%p" > nul
if !errorlevel! equ 0 (
echo %%p 正常运行.
) else (
echo %%p 已停止运行.
)
)
echo !separator!
timeout /t 30 /nobreak > nul
goto monitorLoop
:end
echo 批处理监控结束.
endlocal 本帖最后由 一剑飘零 于 2024-5-3 13:01 编辑
删除,我回答的错误的。 在for循环中引用变量时,需要使用!而不是%来引用循环变量。对于errorlevel,不使用!,因为它是在执行tasklist和find命令后由系统直接设置的。
@echo off
setlocal
set "processList=petro-gsms-station-bus.exe petro-gsms-station-core.exe petro-gsms-station-iot.exe petro-gsms-station-monitor.exe petro-gsms-station-mysqld.exe mysqld-nt.exe EPS.exe EPSServer.exe"
set "separator=-----------------------------"
:monitorLoop
for %%p in (%processList%) do (
echo(
echo 检查 %%p...
tasklist /nh /fi "imagename eq %%p" | find /i "%%p" > nul
if %errorlevel% equ 0 (
echo %%p 正常运行.
) else (
echo %%p 已停止运行.
)
)
echo %separator%
timeout /t 30 /nobreak > nul
goto monitorLoop
:end
echo 批处理监控结束.
endlocal
exit /b QvQsuipian 发表于 2024-5-3 15:13
在for循环中引用变量时,需要使用!而不是%来引用循环变量。对于errorlevel,不使用!,因为它是在执行taskli ...
还是不行,所有服务都是正常的,只有后三个显示正常运行,其余5个都显示已停止运行 ZX0228 发表于 2024-5-4 09:39
还是不行,所有服务都是正常的,只有后三个显示正常运行,其余5个都显示已停止运行
在cmd里tasklist /v一下看看进程名称是否与你在脚本中列出的名称完全匹配{:301_995:} QvQsuipian 发表于 2024-5-5 00:24
在cmd里tasklist /v一下看看进程名称是否与你在脚本中列出的名称完全匹配
匹配的,现在不知道和操作系统有没有关系,在win10 运行的时候是正常的,在win7运行那几个名字比较长的进程状态就不准确了 ZX0228 发表于 2024-5-5 10:08
匹配的,现在不知道和操作系统有没有关系,在win10 运行的时候是正常的,在win7运行那几个名字比较长的进 ...
用管理员身份运行看看 QvQsuipian 发表于 2024-5-5 16:14
用管理员身份运行看看
也是过了,不行。 ZX0228 发表于 2024-5-5 17:28
也是过了,不行。
权限没问题,进程名称也没问题,在win10能用,会不会是杀毒软件/防火墙干扰 ZX0228 发表于 2024-5-5 10:08
匹配的,现在不知道和操作系统有没有关系,在win10 运行的时候是正常的,在win7运行那几个名字比较长的进 ...
进程名有没有隐藏字符呢,tasklist -v列出来的名称直接复制出来写到批处理里面
页:
[1]