批处理 按照文件的创建时间排序 获取第一文件
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/
代码示例:
@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/
相关文章推荐
- 批处理 按照文件的创建时间排序 获取第一文件
- C# 获取文件根据创建时间进行排序
- C# 如何获取某文件夹的文件列表,并按文件的创建时间排序?
- C#.net获取指定文件夹下的所有jpg文件,并按文件创建时间排序
- C#.net获取指定文件夹下的所有jpg文件,并按文件创建时间排序
- .NET按照创建时间获取文件夹文件
- 直接由Java获取文件的创建时间
- 获取本地文件列表后按照文件修改时间降序排列
- Java 通过 JNA (Java Native Access) 获取、设置 Windows 操作系统的文件创建时间、文件修改时间、文件访问时间
- C++ 如何获取目录下面的文件/文件的创建时间
- asp fso读取文件夹,如何按照(1:按创建时间 2:按访问时间 3:按修改时间 4:按名称)排序(2008-09-18,11:19:18)
- PHP文件目录操作问题 列出目录下的东西时 如何先列目录,再列文件 文件也按照名称或时间排序或者类型
- asp fso读取文件夹,如何按照(1:按创建时间 2:按访问时间 3:按修改时间 4:按名称)排序(2008-09-18,11:19:18)
- C# 获取文件大小,创建时间,文件信息,FileInfo类的属性表
- Perl 把一堆文件 按照 文件名字中的时间 进行排序
- 厚积薄发——JAVA之IO获取最新修改文件与创建文件时间
- PB 调用API获取文件的创建时间、访问时间、修改时间
- asp fso读取文件夹,如何按照(1:按创建时间 2:按访问时间 3:按修改时间 4:按名称)排序(2008-09-18,11:19:18)
- delphi 获取文件创建,修改时间
- 获取文件创建时间和大小的代码