我是否应该始终为整个批处理脚本启用延迟扩展?

lxv*_*xvs 4 batch-file

我是否应该始终在开始时放置setlocal enableDelayedExpansion批处理脚本,即使我不需要它?

它对性能有影响吗,或者会导致任何问题吗?

jeb*_*jeb 5

我几乎总是在任何批处理文件的开头启用延迟扩展。

因为它有两个主要优点:

  • 扩展!varname!是在执行表达式时计算的,而不是在解析时计算的,就像百分比扩展一样,这可以避免很多问题
  • 扩展的内容始终是安全的,不会被进一步(重新)解析,特殊字符不会造成损害
  • setlocal防止局部变量污染环境

唯一的缺点是感叹号本身的处理。
但即使这样也可以通过一些粘合代码来解决