首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >批量编程

批量编程
EN

Stack Overflow用户
提问于 2015-12-09 07:21:44
回答 1查看 139关注 0票数 0

在批处理脚本中使用FOR时,我遇到了一个问题。

我的批处理文件包含以下内容:

代码语言:javascript
复制
Echo off
set max_page=2
for /l %%i IN (1,1,%max_page%) do (
echo.
echo  Page %%i off %max_page%
echo  ========================================================
echo page %%i

:find_server
set "result=true"
echo page %%i
wget -S --spider -t 1 http://portal/ 2> check_portal.txt
echo page %%i
for /f "skip=1 tokens=4" %%b in ('findstr /L "Connecting" check_portal.txt') do set status=%%b
echo page %%i
if "%status%"=="failed:" set result=false
echo page %%i
if "%result%"=="false" (
    goto :find_server
)else goto :server_connected

:server_connected
for /f "skip=3 tokens=2 delims=/" %%c in ('findstr /L "Location: " check_portal.txt') do set server_portal_upd=%%c
echo page %%i
)
pause

结果:

代码语言:javascript
复制
 Page 1 off 2
 ========================================================
page 1
page 1
page 1
page 1
page 1
page %i
Press any key to continue . . .

但是,如果删除了下面的行,则脚本将成功运行。

代码语言:javascript
复制
:find_server
    set "result=true"
    echo page %%i
    wget -S --spider -t 1 http://portal/ 2> check_portal.txt
    echo page %%i
    for /f "skip=1 tokens=4" %%b in ('findstr /L "Connecting" check_portal.txt') do set status=%%b
    echo page %%i
    if "%status%"=="failed:" set result=false
    echo page %%i
    if "%result%"=="false" (
        goto :find_server
    )else goto :server_connected

    :server_connected
    for /f "skip=3 tokens=2 delims=/" %%c in ('findstr /L "Location: " check_portal.txt') do set server_portal_upd=%%c

为什么Line 8出现在page %i而不是page 1上?哪里出错了?请纠正我。非常感谢你的建议

EN

回答 1

Stack Overflow用户

发布于 2015-12-09 09:13:00

标签:find_server等终止for循环。尝试使用call :subroutineneame进行重组

顺便说一句,在上必须有一个空格,的两边都是else关键字。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34172899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档