【 以下文字转载自 Joke 讨论区 】
发信人: alanju (alanju), 信区: Joke
标 题: bug变特性的案例
发信站: 水木社区 (Thu Sep 8 21:15:22 2022), 站内
windows的批处理有个bug:循环/IF/else里面改变量的值,读不到更新,只能读之前的值。
比如循环之前给一个counter变量设置值0,在循环里面让counter加一,可以加成功,但是你用%counter%读不到更新的值,读到的值还是0.
在循环外面,就可以读到更新值,或者调用label(当作函数)也行。
厂家的解释说是,循环/IF/else里面的代码块,是当成一行来解析的了,所以 读值 读到的是进入循环之外的值。如此不会去读它更新的值。
然后就搞出一个 delayed expansion 来满足 读取 最新值 的需求。
--
FROM 120.85.113.*