[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 12# qixiaobin0715


    测试的时候将 dir /tc 改为 dir /tw (最后修改时间)就可以了。运行效率上不会有明显差别。

TOP

回复 14# alredstone
我觉得你可能没有理解对。对于同一个文件来说,循环变量%%a可能会发生变化,而判断语句括号中的语句只会执行一次。而你所说的“错误”,就像 idwma 在13楼指出的那样,是mkdir命令的问题,有可能同一个文件夹中存在多个符合条件的文件,创建文件夹时有重名情况引起的。

TOP

本帖最后由 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 坛友直接关闭报错的方式,更加简单粗暴。


.

TOP

返回列表