- 帖子
- 13
- 积分
- 25
- 技术
- 0
- 捐助
- 0
- 注册时间
- 2022-4-19
|
18楼
发表于 2022-5-19 12:29
| 只看该作者
本帖最后由 alredstone 于 2022-5-19 12:58 编辑
回复 17# qixiaobin0715
您说的没错,判断语句括号中的语句只会执行一次。然而,对 %%a 的赋值是 for /f "skip=4 tokens=1" %%a in ('dir "%%z" /tc') 完成的,是在 if 语句之前。
因为 %%a 会被赋值 3 次, 所以 if "%%a" GEQ "2022/01/01" 这句会被执行 3 次。而这 3 次比对,会导致代码的鲁棒性不佳(比如日期格式为 MM/DD/YYYY 的系统里,就会报错),这是我在纠结的地方。
所以说,不是我没有理解 @idwma 坛友的代码,而是您可能没有理解 cmd 对 for /f + if 的转译规则。
题外话,关于 mkdir 命令创建重名文件夹报错的问题,处理起来很简单,删掉 mkdir 行,将 copy 改为 xcopy 命令就可以了。当然,@idwma 坛友直接关闭报错的方式,更加简单粗暴。
. |
|