我想运行一个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
)很重要。