|
1
2
显然,考虑到我们在循环中重置了env变量,您会认为输出将是“after”。 但实际输出将是“之前”。原因是,变量替换是在读取命令时由解释器在.bat文件中完成的,而不是在执行命令时。因此,对于复合语句,当首次遇到if语句时,会计算主体中的变量。 您可以通过使用延迟环境变量扩展(需要启用它)来实现这一点。如果已启用,则可以执行以下操作:
启动cmd.exe时,可以使用/v选项启用延迟环境变量扩展。 [背景故事——我们中的许多人仍然使用传统的.bat文件来驱动make过程等。显然,有更好的脚本工具,但并不总是可以使用它们。不久前,我遇到了这个问题,最近又发现另外两个人因为同样的事情而拔了头发。因此,了解解释器如何进行变量替换是有用的。 |
|
2
0
替代品
这是使批处理文件处理变得相当痛苦的许多事情之一,而不仅仅是简单的事情。 |