dos批处理得出最近修改文件夹
Tiger
最近写了个批处理文件,实现的功能是:一个文件夹(比如a文件夹)里面有很多子文件夹,需要找到最新的2个子文件夹(最近修改时间)。刚开始的思路是:得到a里面每个子文件夹的修改时间,然后比较,这样虽然思路清晰,但是却非常麻烦,特别是如果子文件夹很多运算就很多,还要涉及到日期的比较,特别麻烦,不可取。后来采取的方法是:把a里面的子文件夹名字取出来,按照修改时间先后排序(b文件),然后取出最后面的2条记录。这样思路也非常清晰,但是这样又有新的问题了,怎么从b文件里取出最后面的两条记录。在这个地方我卡了大半天(也许dos批处理命令真的太弱,或者我太菜了,没有找到像head之类的方法,edit文件也没成功,如果有高手知道,麻烦留言告知一下),后来实在没辙了就绕了个弯实现了这个功能。思路如下:先得到b文件的行数(假如为length),然后循环b文件跳过length-2行,也就是从倒数第二行开始往下循环,这样刚好得到最后两行的记录,也就是最新修改过的前2个子文件夹。
代码如下:
getLastestModifyfolderrem 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如果想得到最新修改文件(不是文件夹)的时间可以用下面的命令:
getLastestModifyFileTimed:
cd D:test
(for /f "delims=" %%a in (dir /B /AD "D: est") do (
set a=%%a
setlocal enabledelayedexpansion
set/p=!a! <nuls
for /f补充:综合编程 , 其他综合 ,
上一个:批处理中获取当前路径
下一个:从C++到Java,十年技术生涯的几点思考CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,