为命令提示符扩展环境variables

我想运行一个cmd.exe,它将在通话时评估环境variables,而不是parsing命令。 如果我将BASE设置为2并回显它,我应该看到数字2,尽pipe运行此脚本不能正确设置基数。

预期行为: C:\Users\schristo>cmd.exe /X /C "set BASE=2 && echo %BASE% && pause" 2 Press any key to continue . . . C:\Users\schristo>cmd.exe /X /C "set BASE=2 && echo %BASE% && pause" 2 Press any key to continue . . .

实际行为: C:\Users\schristo>cmd.exe /X /C "set BASE=2 && echo %BASE% && pause" %BASE% Press any key to continue . . . C:\Users\schristo>cmd.exe /X /C "set BASE=2 && echo %BASE% && pause" %BASE% Press any key to continue . . .

这应该为你工作:

cmd.exe /X /V:ON /C "set BASE=2&&echo !BASE!&&pause"

/V:ON启用变量的延迟扩展,这就是你在这里所需要的。 开关顺序( /V:ON /C )很重要。