3

我有这个代码:

if %Ret:~6,4% EQU %Year% (
SET test=text
ECHO %test%
) else (
ECHO NO
)

代码进入 if 循环,但它总是返回 Echo is off!我注意了 = 前后的空格。有任何想法吗?

4

1 回答 1

5

今年此类问题的编号#342。

在解析块时,在执行任何行之前发生百分比扩展。
所以在echo %test%设置变量之前扩展了。

因此存在延迟扩展,它在执行一行时扩展。

setlocal EnableDelayedExpansion
if "%Ret:~6,4%" EQU "%Year%" (
  SET test=text
  ECHO !test!
) else (
  ECHO NO
)
于 2013-11-15T09:14:52.903 回答