2017-08-10 168 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! –