批处理文件:SET variable = string不起作用

Ali*_*ice 3 batch-file

我有这个代码:

if %Ret:~6,4% EQU %Year% (
SET test=text
ECHO %test%
) else (
ECHO NO
)
Run Code Online (Sandbox Code Playgroud)

代码进入if循环,但它总是返回Echo关闭!我注意到=之前和之后的空间.有任何想法吗?

jeb*_*jeb 5

今年此类问题的第#342个.

在解析块之前,在执行任何行之前,会出现百分比扩展.
所以在echo %test%设置变量之前扩展.

因此存在延迟扩展,其在执行线时扩展.

setlocal EnableDelayedExpansion
if "%Ret:~6,4%" EQU "%Year%" (
  SET test=text
  ECHO !test!
) else (
  ECHO NO
)
Run Code Online (Sandbox Code Playgroud)