批量循环字符串比较

时间:2012-11-02 20:10:28

标签: for-loop batch-file comparison

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。有任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

FOR循环中变量的扩展要求您启用延迟扩展以强制变量在运行时展开,而不是在解析时展开。请阅读HELP SET以获取更多信息。

尝试将代码更改为

@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

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