搜索字符串中的子字符串 - 此时意外

时间:2013-12-11 17:56:33

标签: batch-file cmd

我正在尝试确定选项是否为VC编译器的定义语句/选项(/ DSOME_OPTION = 1,例如)。这是选项处理循环的一部分,它返回错误“此时意外:=选项。”。我使用了来自StackOverflow: Batch file: Find if substring is in string (not in a file)

的搜索子字符串解决方案
setlocal enabledelayedexpansion
:loop
if not "%~1"=="" (
    rem all defines
    set "option=%~1"
    if x%option:/D=%==x%option% (
        set DEFINE_STR=%DEFINE_STR% %~1
        echo "DEFINE_STR=%DEFINE_STR%"
        pause
    )
    shift
    goto :loop
)

1 个答案:

答案 0 :(得分:2)

试试这个:

@echo off

setlocal enableDelayedExpansion
set "DEFINE_STR="
:loop
if not "%~1"=="" (
    rem all defines
    set "option=%~1"
    if "!option:/D=!" == "!option!" (
        set "DEFINE_STR=!DEFINE_STR! %~1"
        echo "DEFINE_STR=!DEFINE_STR!"
        pause
    )
    shift
    goto :loop
)
endlocal

在这个问题中,您可以找到更多信息 - > Why can I not get a substring of a delayed expansion variable in an if statement?