批处理中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都没有起到作用,请问是什么原因? 展开
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个回答
展开全部
这种情况是因为您没有设置变量延迟选项。就是需要让for()循环中的变量能连续变化,否则每次循环都维持原值。
需要这样:
在批处理最开始加上:setlocal enabledelayedexpansion
在for()中定义的变量,在引用时将%换为!
另外,您在for中写的pause是无法停住的,会被批处理忽略。
关于批处理的变量延迟,您可能还需要在专门学习一下。推荐您一篇百度文库的文章:
批处理-延迟变量介绍
http://wenku.baidu.com/link?url=Y8cMy2MhNnNeNx3hi2K9zLwFHIbYuJVjTLgzZg1_lQUsXzn9hq2Nnx6J01QVL4-FfFcWatU_GTwvx9nsEdfrJ9w0_zx6Dh2zvbDWgJcKjOS
需要这样:
在批处理最开始加上:setlocal enabledelayedexpansion
在for()中定义的变量,在引用时将%换为!
另外,您在for中写的pause是无法停住的,会被批处理忽略。
关于批处理的变量延迟,您可能还需要在专门学习一下。推荐您一篇百度文库的文章:
批处理-延迟变量介绍
http://wenku.baidu.com/link?url=Y8cMy2MhNnNeNx3hi2K9zLwFHIbYuJVjTLgzZg1_lQUsXzn9hq2Nnx6J01QVL4-FfFcWatU_GTwvx9nsEdfrJ9w0_zx6Dh2zvbDWgJcKjOS
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询