Board logo

标题: [文件操作] [已解决]如何写批处理保留备份文件夹里按日期命名的最新文件 [打印本页]

作者: tmp05    时间: 2020-9-11 10:46     标题: [已解决]如何写批处理保留备份文件夹里按日期命名的最新文件

本帖最后由 tmp05 于 2020-9-24 17:22 编辑

已设置了每日定时运行批处理备份文件到d:\bak文件夹,现要求定时移动旧的备份文件到d:\bakold,d:\bak只保留当前日期的最新备份,如bak20200911.rar

d:\bak下有以下以日期命名的备份文件,还有一些其它文件

bak20200909.rar
bak20200910.rar
bak20200911.rar
a.7z
b.7z
c.rar
......

试写了以下代码,帮修改下,谢谢!
forfiles /p "d:\bak\bak*.rar" /d -1 /c "cmd /c move /y @path d:\bakold\
这里是否能用通配符来表示bak开始的文件名?
作者: tmp05    时间: 2020-9-12 20:31

是标题词不达意?
作者: tmp05    时间: 2020-9-13 10:19

有经验的进,谢谢。
作者: Batcher    时间: 2020-9-13 22:17

回复 1# tmp05
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "SrcFolder=D:\bak"
  4. set "DstFolder=D:\bakold"
  5. if not exist "%DstFolder%" (
  6.     md "%DstFolder%"
  7. )
  8. echo 获取系统日期
  9. for /f "delims=" %%i in ('powershell -c "Get-Date -UFormat '%%Y%%m%%d'"') do (
  10.     set "SysTS=%%i"
  11. )
  12. pushd "%SrcFolder%"
  13. for /f "delims=" %%i in ('dir /b /a-d "bak*.rar"') do (
  14.     set "FileName=%%i"
  15.     set "FileDate=!FileName:~3,8!"
  16.     if "!FileDate!" neq "%SysTS%" (
  17.         move /y "!FileName!" "%DstFolder%"
  18.     )
  19. )
  20. popd
复制代码

作者: tmp05    时间: 2020-9-24 17:21

回复 4# Batcher
回复迟了,试了,能用,感谢!




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2