[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[日期时间] 批处理如何获取昨日或者前日创建的文件?

比如,我想获取昨日创建的文件,或者前天创建的文件,不知道有什么办法吗?

回复 2# Batcher


    谢谢,不过我是想获取昨日创建的文件,而不是昨日之前的文件

TOP

谢谢,我用for 和 dir 语句来获取了...已经搞定

TOP

回复 6# Batcher


    我这段代码的用处是用来删除N天前的数据库备份文件,但是保留n-15天内的,每天的最后一个备份文件
  1. @echo off
  2. ::注意,系统的默认日期格式应该为yyyy/mm/dd 否则会出问题
  3. ::---------变量设置区-------------
  4. ::这里注意,一定要打开enabledelayedexpansion,否则取的总是变量的初始值
  5. setlocal enabledelayedexpansion
  6. set sd=D:\mssql\backup
  7. ::设置需要操作的文件的前缀
  8. set mask="mylogistics_backup_*"
  9. set searchmask="mylogistics_backup_"
  10. ::设置N天前的文件每天保留一个最新备份
  11. set DaysAgo=3
  12. ::---------执行区------------
  13. cd /d "%sd%"
  14. for /l %%z in (%DaysAgo%,1,5) do (
  15.             echo ---------------
  16.             ::获取N天之前的日期
  17.             for /f %%i in ('powershell -c "Get-Date (Get-Date).AddDays(-%%z) -uformat "%%Y/%%m/%%d""') do (
  18.                 set "DstDate=%%i"
  19.             )
  20.             echo process date is !DstDate!
  21.             ::获取 第 n 天前最后创建的文件名(仅仅是一天的文件)
  22.             set lastfile=0
  23.             for /f "tokens=1,2,4" %%a in ('dir %mask% /tc ^| find %searchmask%') do (
  24.                 set createtime="%%a %%b"
  25.                 set latestTime="0"
  26.                 if /i !DstDate! EQU %%a ( if /i !createtime! GTR !latestTime! (set latestTime=!createtime! && set lastfile=%%c))
  27. )
  28.            echo lastfile is !lastfile!
  29.            ::删除第N天前文件,但是保留最后一个最后创建的文件(仅仅是一天的文件)
  30.            for /f "tokens=1,2,4" %%a in ('dir %mask% /tc ^| find %searchmask%') do (
  31.            if /i !DstDate! EQU %%a ( if /i !lastfile! neq %%c ( del %%c ))
  32.            
  33.            )
  34. )
  35. pause
复制代码

TOP

返回列表