首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >批量延迟扩展不适用于周围的if子句

批量延迟扩展不适用于周围的if子句
EN

Stack Overflow用户
提问于 2018-05-29 07:39:17
回答 3查看 122关注 0票数 2

在下面的脚本中,我调用了一个子例程,其中包含一个字符串、该字符串的子字符串的最大长度和第三个不存在的变量,以取回子字符串。

脚本应该检查具有最大子串长度的字符串之后的下一个字符是否为空格,如果是,则按该空格剪切该字符串(删除空格)并返回子字符串,并通过剪切子字符串部分来更改传递的字符串。示例:

字符串:"Hello World Bla“

substringLength: 5

CALL :get_substring string substringLength substring

=>字符串:"World Bla“(无空格),substringLength: 5(无变化),子串:"Hello”

这在没有if子句的情况下工作得很好,但是当我使用if子句时就不行了,即使我使用了延迟扩展。

以下是不带if语句的工作代码:

代码语言:javascript
复制
@ECHO OFF
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
    SET string=Hello World wasserschutzpolizei
    SET /A substringLength=5
    CALL :get_substring string substringLength substring
    ECHO !string!
    ECHO !substring!
    EXIT /B 0
ENDLOCAL

:get_substring
    SETLOCAL ENABLEDELAYEDEXPANSION

    SET "string=!%~1!"
    SET "substringLength=!%2!"
    SET nextChar=!string:~%substringLength%,1!

    REM IF "!nextChar!"==" " (
        SET substring=!string:~0,%substringLength%!
        ECHO !substring!
        SET /A cutSpaceCount=!substringLength!+1
        SET string=!string:~%cutSpaceCount%!

        ECHO !string!

        ENDLOCAL & SET %1=%string% & SET %3=%substring% & EXIT /B 0
    REM ) ELSE (
    REM     Some other case    
    REM )

EXIT /B 0

当我在if语句中进行注释时,这不起作用:

代码语言:javascript
复制
IF "!nextChar!"==" " (
    SET substring=!string:~0,%substringLength%!
    ECHO !substring!
    SET /A cutSpaceCount=!substringLength!+1
    SET string=!string:~%cutSpaceCount%!

    ECHO !string!

    ENDLOCAL & SET %1=%string% & SET %3=%substring% & EXIT /B 0
) ELSE (
    REM Some other case    
)

if-statement?

  • How可以修复该脚本吗?
  1. 为什么脚本不起作用?

请注意,我的例程还应该包含一个else语句,因为问题是相同的,所以我去掉了它。

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

https://stackoverflow.com/questions/50574549

复制
相关文章

相似问题

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