For loop 循环字符串比较批处理

For loop 循环字符串比较批处理,for-loop,batch-file,comparison,For Loop,Batch File,Comparison,我希望先比较blah1和%1,然后再比较blah2和%2。 但是,将仅为%client%分配blah2。有没有办法解决这个问题?在FOR循环中展开变量需要启用延迟展开以强制变量在运行时展开,而不是在解析时展开。有关详细信息,请阅读帮助集 并尝试将代码更改为 SET CLIENTS=blah1:blah2 for %%x in (%CLIENTS::= %) do ( SET client=%%x echo %client%; if "%1"==%client% goto end ) :end

我希望先比较blah1和%1,然后再比较blah2和%2。
但是,将仅为%client%分配blah2。有没有办法解决这个问题?

FOR
循环中展开变量需要启用延迟展开以强制变量在运行时展开,而不是在解析时展开。有关详细信息,请阅读帮助集

并尝试将代码更改为

SET CLIENTS=blah1:blah2

for %%x in (%CLIENTS::= %) do (
SET client=%%x
echo %client%;
if "%1"==%client% goto end
)
:end

请注意,引用变量时使用的语法略有不同
!客户而不是
%client%
。延迟环境变量扩展允许您在执行时使用不同的字符(感叹号)来扩展环境变量。

我使用了上面的代码,但是,当我提供blah1作为arg1时,它仍然无法匹配条件。@VictorW-这是因为比较的左侧被引用,而右边不是。如果“%~1”=“!client!”转到结束,则该行应为

@echo off
setlocal enabledelayedexpansion
SET CLIENTS=blah1:blah2
set CLIENTS=%CLIENTS::= %
for %%x in (%CLIENTS%) do (
  SET client=%%x
  echo !client!;
  if "%1"=="!client!" goto end
  )
:end