当前位置:编程学习 > 网站相关 >>

dos批处理得出最近修改文件夹

Tiger

最近写了个批处理文件,实现的功能是:一个文件夹(比如a文件夹)里面有很多子文件夹,需要找到最新的2个子文件夹(最近修改时间)。刚开始的思路是:得到a里面每个子文件夹的修改时间,然后比较,这样虽然思路清晰,但是却非常麻烦,特别是如果子文件夹很多运算就很多,还要涉及到日期的比较,特别麻烦,不可取。后来采取的方法是:把a里面的子文件夹名字取出来,按照修改时间先后排序(b文件),然后取出最后面的2条记录。这样思路也非常清晰,但是这样又有新的问题了,怎么从b文件里取出最后面的两条记录。在这个地方我卡了大半天(也许dos批处理命令真的太弱,或者我太菜了,没有找到像head之类的方法,edit文件也没成功,如果有高手知道,麻烦留言告知一下),后来实在没辙了就绕了个弯实现了这个功能。思路如下:先得到b文件的行数(假如为length),然后循环b文件跳过length-2行,也就是从倒数第二行开始往下循环,这样刚好得到最后两行的记录,也就是最新修改过的前2个子文件夹。

代码如下:

getLastestModifyfolder
rem D: est是a文件夹
d:
cd D:test
rem 得到b文件(E:directory)
dir /b /o:d>E:directory
rem 得到类型为 “行数:最后一行内容”的字符串(str)
for /f "tokens=1 delims=" %%i in (findstr /n "." E:directory) do echo %%i>str
rem 截取行数(length)
for /f "tokens=1 delims=:" %%a in (str) do set /a length=%%a
rem 得到需要跳过循环的行数
set /a span=length-2
rem 得到最后的两个记录
for /f "skip=%span%" %%j in (E:directory) do echo %%j

del /q str
del /q E:directory

如果想得到最新修改文件(不是文件夹)的时间可以用下面的命令:

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,