本帖最后由 CrLf 于 2017-2-14 11:01 编辑
回复 8# zs895
http://www.bathome.net/viewthread.php?tid=30609
/s:2~2 表示递归路径,只显示其中第二层子目录的内容
/S[:Min~Max]
显示指定目录和所有子目录中的文件
Min~Max 能筛选出 Min < 递归深度 < Max 的文件
可以用 /S:Min 或 /S:~Max 单独设置上限或下限
/t::-2 表示修改日期为 2 天前,:: 和 : 的区别是 :: 仅用于筛选,而不输出时间信息
* /Tx[:FORMAT | :Min~Max[=Format]]
Tx 代表显示文件的时间属性(仅能指定一种):
/TC 创建时间 /TA 上次访问时间 /TW 上次写入时间
扩展参数可指定范围,Min~Max 能筛选出 Min < 文件日期 < Max 的文件
可以用 /Tx:Min 或 /Tx:~Max 单独设置上限或下限
支持常见日期格式,并能进行增减计算,格式为:
DateTime[[ + | - ]Number[Type]]
+ 为增加,- 为减少,Number 为数量,Type 为单位
可选的 Type 有:w(周) d(日[默认]) h(时) m(分) s(秒)
hash *.txt /tw:12:00-5
rem 列举所有 5天前的12:00 之后修改的 txt 文件
hash /tc:9:00-10d+12h
rem 列举所有 10天前的9:00再加12个小时 之后创建的文件
如果同时明确指定了 Min 与 Max,则会用当前时间自动补充未指定的部分
将日期补全之后,才会进行日期增减计算
若日期前缀 * 符号,则会优先用另一半补充未指定的部分如:
hash /tw:"7/29 0:0"~*8:00
rem 列举从今年 07/29 00:00 到 同一天的08:00 之间修改的文件
若参数中含有 % 号,将理解为设置日期显示格式
日期格式语法参考 strftime 函数,如:
hash /tw:%Y年%m月%d日
hash /printf:"%s修改于%s\n",file,tw:"%H时%M分%S秒"
如果要用一个 /tx 同时指定日期范围与显示格式
可以用 = 符号表示其后内容为日期格式:
hash /tc:"00:00+12h"="%y年第%W周"
/do:"echo del ""%%s""" 表示将文件名代入字符串,并执行 echo del "要删除的文件"
/DO:Format[,Key,...]
/DOUNTIL:Format[,Key,...]
语法和 /PRINTF 一致,但效果是执行根据 Format 生成的命令行
/DO 无论执行结果如何,都将依次执行
/DOUNTIL 将中止于退出码不为 0 的命令
效果类似于 forfiles,但使用起来更灵活,如:
hash /do:"ren ""%s"" ""[%d]%s""",file,n,file
echo 当前目录下有 %errorlevel% 个 txt 文件
rem 启用 /return 开关将返回匹配的具体数量
/PRINTF /DO /DOUNTIL 开关互斥,只能有一个生效
启用 /RETURN 开关后,将返回最后一条命令的退出码 |