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。有任何想法如何解决这个问题?
答案 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%
。 延迟环境变量扩展允许您在执行时使用不同的字符(感叹号)来扩展环境变量。