Batch file 设置变量并在一个批处理命令行中生效

Batch file 设置变量并在一个批处理命令行中生效,batch-file,command-prompt,Batch File,Command Prompt,我刚发现如果你做了以下事情: set Variable=Test & echo %Variable% --Outputs "%Variable%" echo %Variable% --Outputs "Test" 在新线路运行之前,更改不会生效。我需要让它立即生效,因为我需要将它与非常长的单行命令一起使用。您需要延迟扩展或调用echo: @echo off setlocal enableDelayedExpansion set var=v

我刚发现如果你做了以下事情:

set Variable=Test & echo %Variable%  --Outputs "%Variable%"
echo %Variable%                      --Outputs "Test"

在新线路运行之前,更改不会生效。我需要让它立即生效,因为我需要将它与非常长的单行命令一起使用。

您需要延迟扩展或
调用echo

@echo off

setlocal enableDelayedExpansion

set var=val&echo !var!

endlocal

set var=val&call echo %%var%%
如果您将命令的组合与
&
放在一起,或放在括号中,则set命令将在所有命令执行后生效。因此您需要或延迟扩展(这将允许您使用
而不是
%
访问变量)或调用

要在命令提示符中启用延迟扩展,您需要像这样启动
cmd/v:on

>cmd /v:on
>set Variable=Test & echo !Variable!  

它工作了,但我不知道如何将它与其他命令一起使用。在这之后,我必须把电话放在每个命令前面吗?编辑:我刚看到你的新评论。让我试试。