2017-08-10 95 views
0

這是一個Windows cmd.exe問題。試圖設置一個變量,然後使用& &在一個命令行中包含引用該變量的另一個命令不起作用。直到下一行被處理,該變量才被設置。Windows批處理:set && echo不起作用

重現步驟:

set X=1 && echo %X% 
%X% 

echo %X% 
1 

set X=2 && echo %X% 
1 

echo %X% 
2 

有沒有一種方法,使這項工作如預期?

+0

無需任何兩個連詞符號。可以爲其中的一種情況,但我仍然會說echo命令應該放在下一行。 – Compo

+1

如果「這是Windows批處理文件問題」,爲什麼您的示例是從命令行獲取的?第一行在批處理文件_中顯示不同的輸出。你可以使用:'set X = 1 && call echo %% X %%'See [this answer](https://stackoverflow.com/questions/9970348/how-to-realize-an-assignment-within-the- if-block/9970460#9970460) – Aacini

回答

1

做的第一行:setlocal enabledelayedexpansion然後

set X=I_AM_ECHOED && echo !X! 
echo !X! 

將打印

I_AM_ECHOED 
I_AM_ECHOED 
+0

嗯,不是命令行,而不是批處理文件。很不一樣。 –

+0

setlocal enabledelayedexpansion && set X = FOO && echo!Z!結果:!Z! –