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

4

1 回答 1

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%. 延迟环境变量扩展允许您在执行时使用不同的字符(感叹号)来扩展环境变量。

于 2012-11-02T20:47:43.267 回答