我正在尝试确定选项是否为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
)
答案 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?