我想看看一个字符串是否包含另一个字符串,其中两个字符串都是变量。基本上它与this thread相同,但有两个变量。采用该解决方案并将其应用于我!VAR1!
和!VAR2!
的情况(这些变量在FOR
循环中声明)我尝试了:
if not x!VAR1:!VAR2!=!==x!VAR1! ECHO It contains !VAR2!
不幸的是它不起作用。任何帮助将不胜感激。我还声明了SETLOCAL EnableDelayedExpansion
,因此我可以访问变量。
非常感谢任何帮助!
谢谢!
答案 0 :(得分:4)
当我检查另一个字符串中是否存在字符串时,我喜欢使用for
循环而不是if
。
for /f "delims=" %%I in ('echo !VAR1! ^| findstr /i /c:"!VAR2!"') do (
echo !VAR1! contains !VAR2!
)
这具有不区分大小写的匹配的额外好处。
如果您更喜欢保留if语句,那么尝试使用中间变量来减少混淆。
set vt=!VAR1:%VAR2%=!
if x%vt%==x%VAR1% (
echo %VAR1% remained the same after removing %VAR2%. %VAR1% did not contain %VAR2%
)
答案 1 :(得分:4)
if "!VAR1:%VAR2%=!" neq "!VAR1!" echo It contains !VAR2!
答案 2 :(得分:3)
这是我认为最简单的方式。
echo %VAR1% | find /i "%VAR2%" >nul && echo %VAR2% was found!
如果找不到,请将&&
替换为||
。
答案 3 :(得分:3)
正如Aacini和rojo所示,你必须对两个变量使用不同的扩展,正常内部和外部延迟。
但也许您在设置变量的相同代码块中运行IF。现在你无法使用正常扩展。解决方案是将内部变量传递给FOR变量。
(
:: Some code that sets the value of var2
::
for /f "delims=" %%A in ("!var2!") do if "!var1:%%A=!" neq "!var1!" echo It contains %%A
)