Batch file 正在搜索字符串中的子字符串-此时意外

Batch file 正在搜索字符串中的子字符串-此时意外,batch-file,cmd,Batch File,Cmd,我试图确定option是否是VC编译器的define语句/option(/DSOME_option=1,例如)。下面是选项处理循环的一部分,它返回错误“此时意外:=option”。我使用了来自的搜索子字符串解决方案 试试这个: @echo off setlocal enableDelayedExpansion set "DEFINE_STR=" :loop if not "%~1"=="" ( rem all defines set "option=%~1" if "!

我试图确定option是否是VC编译器的define语句/option(/DSOME_option=1,例如)。下面是选项处理循环的一部分,它返回错误“此时意外:=option”。我使用了来自的搜索子字符串解决方案

试试这个:

@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

在这个问题中,您可以找到更多信息->

第一个等号…您是否在
%1
中有括号?@AntonKochkov您还需要延迟展开,因为您正在更改括号中的变量…请检查我的更新
@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