标题: [代码合集] 批处理怎样获取指定文件夹里修改日期为最新的文件的完整路径 [打印本页]
作者: tianhanlove 时间: 2012-7-3 12:03 标题: 批处理怎样获取指定文件夹里修改日期为最新的文件的完整路径
本帖最后由 pcl_test 于 2016-8-6 18:31 编辑
批处理怎样获取指定路径下文件名?
现有个文件夹H:\backup,里面放的全是数据库备份文件,备份文件会每天自动生成一个,如DB20120702.001,DB20120701.001,现想做个批处理,放进任务计划中,让其每天自动去取该文件夹下最新产生的备份文件文件名,
最好是取出来的结果是这样,例:H:\backup\DB20120701.001,并放入到D:\backup.txt中,求高手赐教啊!
作者: garyng 时间: 2012-7-3 12:07
思路
用dir命令列出目录下的文件 然后用for截取文件创建时间 然后判断最新的 保存到Backup.txt
作者: tianhanlove 时间: 2012-7-3 12:13
回复 2# garyng
请问如何判断文件夹中,最新的文件,能稍微详细点吗,刚接触批处理,复杂点的还不懂。
作者: lky216 时间: 2012-7-3 13:10
本帖最后由 lky216 于 2012-7-3 13:27 编辑
每天最新的不是当天的日期创建的文件吗?那这样就好办,用date命令。
还是今天的备份昨天的?那试试这个- @echo off
- set DaysAgo=1
- >"%temp%\MyDate.vbs" echo LastDate=date()-%DaysAgo%
- >>"%temp%\MyDate.vbs" echo FmtDate=right(year(LastDate),4) ^& right("0" ^& month(LastDate),2) ^& right("0" ^& day(LastDate),2)
- >>"%temp%\MyDate.vbs" echo wscript.echo FmtDate
- for /f %%a in ('cscript /nologo "%temp%\MyDate.vbs"') do (
- set DstDate=%%a
- )
- set DstDate=%DstDate:~0,4%-%DstDate:~4,2%-%DstDate:~6,2%
- echo %DaysAgo%天之前(即昨天)的日期是:%DstDate%
- if exist "H:\backup\DB%DstDate:~0,4%%DstDate:~5,2%%DstDate:~8,2%.001" goto 1 ELSE goto 2
- :1
- echo 没有存在H:\backup\DB%DstDate:~0,4%%DstDate:~5,2%%DstDate:~8,2%.001这个文件
- pause&exit
- :2
- echo H:\backup\DB%DstDate:~0,4%%DstDate:~5,2%%DstDate:~8,2%.001>>D:\backup.txt
- pause
复制代码
作者: lky216 时间: 2012-7-3 13:12
用计划任务也可以,用echo wscript.sleep 86400000 > "%temp%\q.vbs"也可以
作者: tianhanlove 时间: 2012-7-3 13:30
回复 4# lky216
谢谢!但问题是这样的,H:\backup 文件夹下的文件是每天晚上数据库自动备份下来的,因为有好几台服务器,各个服务器的数据库备份时间不统一,所以最新的备份文件创建时间不一定是昨天的,有些也是当天凌晨备份的,所以这个不能定死。
还有就是那个备份的文件名,我只是举了个例子叫DB20120701.001,实际上的文件名要远比这个复杂的多,db2 9.7备份文件的文件名如:DB_DMSA.0.DB2.NODE0000.CATN0000.20120627025011.001,所以取文件名这段代码不能根据时间来自定义了,估计要用dir来获取。能否帮忙再看下,谢谢!
作者: powerbat 时间: 2012-7-3 13:41
“最新”是根据什么?文件名中的日期,还是文件的创建时间?
作者: lky216 时间: 2012-7-3 13:47
回复 6# tianhanlove
那没事呗,一天只有一个文件不是吗?一个批处理一次不是写入一个吗?那这样子就都有写入了,只是时间的问题。
作者: lky216 时间: 2012-7-3 13:51
“最新”是根据什么?文件名中的日期,还是文件的创建时间?
powerbat 发表于 2012-7-3 13:41
文件名中的日期和,文件的创建时间,这两个都是比较新的吧?嘎嘎
作者: tianhanlove 时间: 2012-7-3 14:00
回复 7# powerbat
文件的创建时间(修改时间也可以)吧,比如文件夹中
作者: apang 时间: 2012-7-3 15:53
这样可以吗?- @echo off
- for /f "delims=" %%a in ('dir /a-d /o-d /b /s H:\backup\*.*') do (
- echo %%a>>d:\backup.txt
- goto :eof
- )
复制代码
作者: tianhanlove 时间: 2012-7-3 16:04
回复 11# apang
太谢谢了,亲测了一下,可以了,取的是创建时间最新的文件名。但是能否再麻烦你下,因为我只想backup.txt中只存放一条记录,每次执行批处理的结果覆盖以往的记录,如何做到呢?
作者: apang 时间: 2012-7-3 16:43
本帖最后由 apang 于 2012-7-3 16:44 编辑
回复 12# tianhanlove - (for /f "delims=" %%a in ('dir /a-d /b /o-d /s H:\backup\*.*') do @echo %%a&goto :eof)>d:\backup.txt
复制代码
作者: tianhanlove 时间: 2012-7-4 11:45
回复 13# apang
谢谢!完美解决!
作者: ww0000 时间: 2023-3-18 16:43
回复 13# apang
这个好象不能获取子目录的文件?
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |