找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 29811|回复: 7

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

[复制链接]
发表于 2020-3-2 09:52:41 | 显示全部楼层 |阅读模式
比如,我想获取昨日创建的文件,或者前天创建的文件,不知道有什么办法吗?
发表于 2020-3-2 10:26:28 | 显示全部楼层
回复 1# allen3371


http://bbs.bathome.net/thread-3334-1-1.html
把代码里面的 del 命令去掉试试
 楼主| 发表于 2020-3-2 10:36:37 | 显示全部楼层
回复 2# Batcher


    谢谢,不过我是想获取昨日创建的文件,而不是昨日之前的文件
 楼主| 发表于 2020-3-2 10:59:06 | 显示全部楼层
谢谢,我用for 和 dir 语句来获取了...已经搞定
发表于 2020-3-2 11:31:03 | 显示全部楼层
  1. @echo off & setlocal enabledelayedexpansion &rem by author Gan
  2. ::必须需要设置系统时间格式为:2020/02/02
  3. ::设置天数
  4. set /a nd=1
  5. ::设置路径
  6. set "f_path=D:"
  7. ::Begin
  8. call :runnian %date:~0,4%
  9. call :test
  10. if !m! lss 10 set m=0!m!
  11. if !d! lss 10 set d=0!d!
  12. set "limit=!y!/!m!/!d!"
  13. echo 指定日期为:%limit%
  14. for /r "%f_path%" %%a in (*) do (set "file_t=%%~ta"
  15.         set "file_t=!file_t:~0,10!
  16.         if "%limit%" equ "!file_t!" echo %%~dpnxta
  17.         )
  18. echo Done^^!
  19. pause&exit /b 0

  20. :test
  21. for /f "tokens=1-3 delims=/ " %%a in ("%date%") do (set /a y=%%a, m=1%%b%%100, d=1%%c%%100)
  22. if !nd! lss %d% (set /a d-=nd & goto :eof)
  23. set /a nd-=d, m-=1
  24. :loop

  25.   for /l %%a in (1,1,2) do (
  26.   if !m! LEQ 0 (set /a m=12, y-=1 & call :runnian !y!)
  27.   set /a md = m!m!
  28.   if !nd! lss !md! (set /a d=md-nd & goto :eof)
  29.   set /a nd-=md, m-=1
  30.   goto :loop)

  31. :runnian
  32. set /a m1=31, m2=28, m3=31, m4=30, m5=31, m6=30, m7=31, m8=31, m9=30, m10=31, m11=30, m12=31
  33. set /a n=0
  34. set /a a=%1%%4,a1=%1%%100,a2=%1%%400
  35. if !a! equ 0 set n=1& if !a1! equ 0 set n=0
  36. if !a2! equ 0 set n=1
  37. if !n! equ 1 (set /a m2=29) else (set /a m2=28)
  38. goto :eof
复制代码

评分

参与人数 1技术 +1 收起 理由
allen3371 + 1 谢谢

查看全部评分

发表于 2020-3-2 12:56:33 | 显示全部楼层
回复 4# allen3371


    能否把你的代码发出分享一下?
发表于 2020-3-2 15:01:17 | 显示全部楼层
  1. @echo off
  2. set info=互助互利,支付宝扫码头像,感谢打赏
  3. rem 有问题,可加QQ956535081及时沟通
  4. title %info%
  5. cd /d "%~dp0"
  6. set ago=-1
  7. powershell -NoProfile -ExecutionPolicy bypass "$d=(get-date).adddays(%ago%).toString('yyyy-MM-dd');dir -recurse|?{($_.CreationTime.toString('yyyy-MM-dd') -eq $d) -and ($_ -is [System.IO.FileInfo])}|%%{$_.FullName}"
  8. :end
  9. echo;%info%
  10. pause
  11. exit
复制代码
 楼主| 发表于 2020-3-2 15:02:01 | 显示全部楼层
回复 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
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 17:17 , Processed in 0.020906 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表