批处理中for循环中的if没有效果

for/L%%iin(1,1,3)do(clsecho.echo正在尝试第%%i次重新启动服务...echo.scstarttomcat7>nulfor/F"tokens... for /L %%i in (1,1,3) do (
cls
echo.
echo 正在尝试第%%i次重新启动服务...
echo.
sc start tomcat7>nul
for /F "tokens=4 delims= " %%a in ('sc query tomcat7^|findstr /i "state"') do (
set message_e=%%a
%message_e%
pause)
if /i '%message_e%' == 'RUNNING' goto servicesuceess
ping -n 2 127.0.0.1>nul
)
if /i '%message_e%' == 'STOPPED' echo 无法启动该服务,请检查该服务的相关配置是否安装
pause
goto end

上述代码中的两个if都没有起到作用,请问是什么原因?
展开
 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏15(财富值+成长值)
朴素且可爱灬小喵1
推荐于2016-05-07 · TA获得超过2902个赞
知道大有可为答主
回答量:1713
采纳率:89%
帮助的人:520万
展开全部
这种情况是因为您没有设置变量延迟选项。就是需要让for()循环中的变量能连续变化,否则每次循环都维持原值。
需要这样:
在批处理最开始加上:setlocal enabledelayedexpansion
在for()中定义的变量,在引用时将%换为!
另外,您在for中写的pause是无法停住的,会被批处理忽略。

关于批处理的变量延迟,您可能还需要在专门学习一下。推荐您一篇百度文库的文章:
批处理-延迟变量介绍
http://wenku.baidu.com/link?url=Y8cMy2MhNnNeNx3hi2K9zLwFHIbYuJVjTLgzZg1_lQUsXzn9hq2Nnx6J01QVL4-FfFcWatU_GTwvx9nsEdfrJ9w0_zx6Dh2zvbDWgJcKjOS
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式