您的位置:首页 > 其它

批处理 按照文件的创建时间排序 获取第一文件

2014-12-01 22:37 295 查看
示例目标:从指定的文件夹(fromPath)获取符合条件的文件,条件是:文件名称符合一定的规则,并且是最新创建的文件,然后复制到(endPaht)文件中
代码示例:
@echo off
set nowDate=%date:~0,4%%date:~5,2%%date:~8,2%
set fromPath=D:\copy\
set endPath=E:\temp\parse\3HourRefine\
for /f %%a in ('dir %fromPath%t639%nowDate%.txt /b/a-d/a-h/a-s/o-d/tc') do (
  xcopy "%fromPath%%%a" "%endPath%" /k /y /c

)&goto end
:end
&exit

代码说明:

     echo off 关闭在cmd窗口的语句输出
     set nowDate 设置变量,获取变量的的方法:%nowDate%
     set nowDate = %date:~0,4%%date:~5,2%%date:~8,2%获取当前系统的日期,日期格式:yyyyyMMdd
     set fromPath=D:\copy\ 设置复制文件的目录
     set endpath =E:\temp\parse\3HourRefine\ 设置复制文件的存放位置

/f for循环的参数,可以自行百度, %%a 声明变量a,每一次循环,把for循环获取的内容,复制给a

     in() 设置循环的内容
     do() 获取变量后需要进行的操作、

dir 遍历获取文件的批处理,参数说明: dir [drive:][path][filename] [...] [/p] [/w] [/d] [/a[:]attributes][/o[:]sortorder] [/t[:]timefield] [/s] [/b] [/l]
[/n] [/x] [/c]

具体参数说明:

        drive 盘符, path 路径,fileName 文件名,在文件名中可以通过*,?进行文件名的匹配 ,其他的参数,可以参考下面的参考博客

        部分参数说明:/b:列出每个目录名或文件名,每行一个(包含文件扩展名),注意只显示文件名,其他的都不显示
        /a-d:/a 显示所有的文件,-d 只是文件,/a-d 显示说有的只是文件的文件
        /a-h:-h 非隐藏的文件,/a-h 不是隐藏文件的文件

        /a-s:-s 系统文件以为的文件,/a-s 不是系统文件的文件
        /od:/o 文件的排序顺序,d 按日期和时间,最早的优先,/od 按照文件的时间排序,最早的在最前面
        /tc:/t 控制心事或用户排序的时间字段,c 创建,/tc 按照文件的创建时间进行排序
xcopy "%fromPath%%%a" "%endPath%" /k /y /c 进行文件复制
        "%fromPath%%%a" 需要复制的文件
        "%endPath%" 文件复制的目的文件目录
        /k:复制属性。一般的 Xcopy 会重设只读属性
        /y:禁止提示以确认改写一个现存目标文件,就是不提醒,就直接覆盖在复制文件的目的文件夹中已经存在的文件
        /c:即使有错误,也继续复制,就是说,如果文件被占有等,如果复制出错,任然会复制

&goto end 是为了只获取for循环的第一个数据,获取到就跳转到end位置

:end 标记end的位置
&exit 退出

可以参考:http://wlservers.blog.163.com/blog/static/12062230420100311154719/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐