批处理循环中如何处理for循环中跳转语句
for/L%%ein(1,1,5)do(start某程序:loop每隔5秒判断程序是否存在程序的进程(程序执行完后会自动出去)if存在进程(进行的操作延迟5秒gotolo...
for /L %%e in (1,1,5) do (
start 某程序
:loop
每隔5秒判断程序是否存在程序的进程(程序执行完后会自动出去)
if 存在进程(
进行的操作
延迟5秒
goto loop
)else(goto :end)
:end
ECHO 已经完成一次
)
程序中for语句应该执行5次 但是为什么只执行一次后就结束了
应该怎么实现这个功能?
解决了加分~ 展开
start 某程序
:loop
每隔5秒判断程序是否存在程序的进程(程序执行完后会自动出去)
if 存在进程(
进行的操作
延迟5秒
goto loop
)else(goto :end)
:end
ECHO 已经完成一次
)
程序中for语句应该执行5次 但是为什么只执行一次后就结束了
应该怎么实现这个功能?
解决了加分~ 展开
3个回答
展开全部
FOR 循环中goto 到别的标签,就会中断FOR 循环。
可以这样处理
for /l %%i in (1,1,5) do (
start 程序
call :check &&echo,程序执行第%%i次完成。
)
goto :eof
:check exit /b 设置退出代码,0为true,非0为false
延迟5秒
检测进程
if 存在进程 goto :check
exit /b 0
可以这样处理
for /l %%i in (1,1,5) do (
start 程序
call :check &&echo,程序执行第%%i次完成。
)
goto :eof
:check exit /b 设置退出代码,0为true,非0为false
延迟5秒
检测进程
if 存在进程 goto :check
exit /b 0
追问
你的代码很不错
另外想问下 :check exit /b 设置退出代码,0为true,非0为false
exit /b 0
怎么理解
我想在所有操作完成后再进行下面任务 比如
del 1.txt
ECHO -------------------------
ECHO 任务全部完成,按任意键退出
pause >nul
应该加在什么位置
追答
exit /b 是设置退出代码,调用一个程序的时候,程序运行结束会返回一个exitcode,代表程序运行的结果是成功还是失败,或者是出了什么错误!
比如 运行 ping命令,如果ping 成功,会返回0,失败返回1,丢包会返回一个其他数字。
查看程序执行后的exitcode,用echo,%errorlevel%。
call :check &&echo,任务完成。 这一句的意思是,调用:check标签的代码,如果返回值为0,就执行echo,任务完成。
exit /b 0 就是告诉call的下一个命令, call命令执行成功了。
del 1.txt 这一段加在 for () 后,goto :eof之前。
以下代码说明 exit /b 的作用。
call :a && echo,ok||echo,false
call :b &&echo,ok ||echo,false
call :c
echo,%errorlevel%
pause>nul
goto :eof
:a
exit /b 0
:b
exit /b 1
:c
exit /b 999
展开全部
start 某程序
:loop
每隔5秒判断程序是否存在程序的进程(程序执行完后会自动出去)
if 存在进程(
进行的操作
延迟5秒
goto loop
)else(goto :end)
:end
ECHO 已经完成一次
set /a n+=1
if %n% leq 5 goto loop
说明在for中用goto ,for就不起作用了。
:loop
每隔5秒判断程序是否存在程序的进程(程序执行完后会自动出去)
if 存在进程(
进行的操作
延迟5秒
goto loop
)else(goto :end)
:end
ECHO 已经完成一次
set /a n+=1
if %n% leq 5 goto loop
说明在for中用goto ,for就不起作用了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
再试试:
for /l %%e in (1,1,5) do (
start 某程序
for /l %%f in (1,1,1000) do (
if 存在进程(
进行的操作
延迟5秒
) else (
goto end
)
:end
echo 完成了%%e次
)
for /l %%e in (1,1,5) do (
start 某程序
for /l %%f in (1,1,1000) do (
if 存在进程(
进行的操作
延迟5秒
) else (
goto end
)
:end
echo 完成了%%e次
)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询