2013-11-15 73 views
3

我有這樣的代碼:批處理文件:SET變量=字符串不起作用

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

的代碼中,如果循環進入,但它總是返回回聲處於關閉狀態! 我注意=之前和之後的空格。 任何想法?

回答

5

今年這類問題的數字#342。

在執行任何行之前解析塊時發生百分比擴展。
因此,echo %test%在變量設置之前展開。

因此存在延遲擴展,當執行一條線時該延遲擴展。

setlocal EnableDelayedExpansion 
if "%Ret:~6,4%" EQU "%Year%" (
    SET test=text 
    ECHO !test! 
) else (
    ECHO NO 
) 
+1

這裏不是問題。我試過你的解決方案,但它把測試,而不是文字 – Alice

+0

是的,愛麗絲,這是問題和解決方案。也許你沒有像jeb的答案中那樣包含setlocal命令。 – foxidrive