使用批处理将 10 个最旧的备份移动到存档

Posted

技术标签:

【中文标题】使用批处理将 10 个最旧的备份移动到存档【英文标题】:Moving the 10 oldest Backups to archive using Batch 【发布时间】:2013-06-03 18:09:14 【问题描述】:

我正在寻找使用批处理文件执行以下操作的解决方案。 我每天都会在一个文件夹中备份我的数据库,该文件夹以日期命名,例如。

2013-05-13

这已经很好了

现在的问题:

在月底,我想将最旧的 10 个文件夹(包括所有文件)合并到一个存档文件夹中。 10 个最旧文件夹中的所有文件都应移至存档文件夹。相同的文件应该被覆盖(从旧到新)并且文件夹(现在是空的)也应该被删除。

最好的问候

【问题讨论】:

【参考方案1】:

这应该将最旧的 10 个文件夹的内容移动到存档文件夹(应该预先存在),覆盖并保留最新的副本,并删除文件夹:但它不希望备份文件夹中有子目录。

测试后,您可以安排批处理文件。

@echo off
setlocal enabledelayedexpansion
cd /d "d:\source\folder"
set "c=0"
for /f "delims=" %%a in ('dir /ad /b /od') do (
set /a c=c+1
if !c! LEQ 10 (
     echo "%%a"
     move /y "%%a\*.*" "D:\destination\archive\" >nul
     rd "%%a"
  )
)
pause

【讨论】:

谢谢。工作正常。只有排序方向是圆形的。它将新的移动到存档而不是最旧的存档。修复它 谢谢。正确的改变是使用 /od 但因为你的名字排序正确,那么 /on 也可能对你有用。我编辑了帖子。【参考方案2】:

最简单的方法是安装UnixUtils 以获取mvtailhead 实用程序

然后

dir /b /AD /OD|tail -n 10 > temp.txt

为您提供当前目录中 10 个最新目录的列表

for /f "delims=" %%i in (temp.txt) do echo D|mv -f "c:\source\%%i" "c:\destination\%%i" /y >temp.bat

创建脚本将它们移动到某个地方

call temp.bat

调用它。

【讨论】:

以上是关于使用批处理将 10 个最旧的备份移动到存档的主要内容,如果未能解决你的问题,请参考以下文章

SQL 存档脚本

在 find 命令中查找不支持 printf 的 AIX 系统上的前 N ​​个最旧文件

如何将超过 30 天的文件移动到存档位置并将文件存档在存档位置? [关闭]

Hazelcast - 最旧的条目首先被驱逐

从最新到最旧的python对Mongo列表进行排序[重复]

WordPress中的自定义博客存档页面