批处理 find和errorlevel

本人做一进程看守,tasklist/nh|find/i"123.exe">nul2>nulif%errorlevel%neq0(echo%date:~0,10%%TIME... 本人做一进程看守,
tasklist /nh|find /i "123.exe" >nul 2>nul
if %errorlevel% neq 0 (
echo %date:~0,10% %TIME:~0,2%:%TIME:~3,2% 进程正在启动
"C:\XXXX\123.exe
)
if %errorlevel% equ 0 (
echo %date:~0,10% %TIME:~0,2%:%TIME:~3,2% 进程正常
)
运行时候发现不管有没有找到123.ex errorlevel返回值都是0。也就是成功,请高手指教一下
展开
 我来答
迷茫之雁
2011-05-20 · TA获得超过195个赞
知道小有建树答主
回答量:145
采纳率:0%
帮助的人:0
展开全部
我测试是正常的。

最好的解决办法可以写成这样:
tasklist /nh|find /i "notepad.exe" >nul 2>nul &&echo %date:~0,10% %TIME:~0,2%:%TIME:~3,2% 进程正常||(
echo %date:~0,10% %TIME:~0,2%:%TIME:~3,2% 进程正在启动
"C:\XXXX\123.exe"
)
注意&&在前,||在后,反之结果则会得到不正确的结果。
追问
问题已解决,我是这样解决的。
echo off&&setlocal enabledelayedexpansion
tasklist /nh|find /i "123.exe" >nul 2>nul
if !errorlevel! neq 0 (
echo %date:~0,10% %TIME:~0,2%:%TIME:~3,2% 进程正在启动
"C:\XXXX\123.exe
)
if !errorlevel! equ 0 (
echo %date:~0,10% %TIME:~0,2%:%TIME:~3,2% 进程正常
)
不知道有没有什么问题。
还是谢谢你
gltzhouz
2011-05-20 · TA获得超过319个赞
知道小有建树答主
回答量:835
采纳率:0%
帮助的人:0
展开全部
问题出在变量延迟上。
可以写成这样:
setlocal enabledelayedexpansion
FOR /L %%F IN (100,1,199) DO PING -n 1 192.168.1.%%F | find "TTL" >nul & if !ERRORLEVEL!==0 taskkill /im thunder.exe /f

更简便的方法是:
FOR /L %%F IN (100,1,199) DO PING -n 1 192.168.1.%%F | find "TTL" >nul&&taskkill /im thunder.exe /f

通常路由器同享上网,只会用到前面的IP,两台基本就用:192.168.1.100,192.168.1.101。
可以把199改到105,或者就ping 192.168.1.100或者192.168.1.101。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式