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

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

[复制链接]
发表于 2020-9-11 10:46:25 | 显示全部楼层 |阅读模式
本帖最后由 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开始的文件名?
 楼主| 发表于 2020-9-12 20:31:30 | 显示全部楼层
是标题词不达意?
 楼主| 发表于 2020-9-13 10:19:56 | 显示全部楼层
有经验的进,谢谢。
发表于 2020-9-13 22:17:04 | 显示全部楼层
回复 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
复制代码

评分

参与人数 1技术 +1 收起 理由
tmp05 + 1 感谢分享!

查看全部评分

 楼主| 发表于 2020-9-24 17:21:52 | 显示全部楼层
回复 4# Batcher
回复迟了,试了,能用,感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 07:16 , Processed in 0.018429 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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