batch-file - 如果文件不是至少 N 天,如何在批处理文件中指定不删除文件?
问题描述
我有两个参数。有人建议这是一个重复的问题,但我想指定最小年龄和要保留的最小文件数。我不确定如何组合这些参数。
我有一个包含以下代码的批处理文件:
@echo off
set "backupDir=[BACKUP DIR PATH HERE]"
copy /Y "[PATH OF FILE TO BE COPIED]" "[PATH WHERE BACKUP IS SAVED]"
for /f "skip=4 delims=" %%a in ('dir "%backupDir%\" /b /a-d /o:-d') do del "%backupDir%\%%a"
它创建数据库的备份并删除除四个最近实例之外的所有内容。我想要的是确保如果批处理文件在一天中运行不止一次,我最终不会删除旧文件并最终得到四个基本上是相同备份的副本。
如何指定文件必须在删除前至少“N”天?
如果自上次以来还没有至少 24 小时,那么最好有一些限制文件再次运行的东西。但我也不知道该怎么做。
解决方案
如果我理解正确,您想删除除最新的四个备份之外的所有备份,但前提是它们具有最小年龄(或者更准确地说,如果它们在一定天数之前被修改)。
以下代码正是这样做的:
pushd "%backupDir%" || exit 1
rem // Iterate files but skip the four ones that have been modified most recently:
for /F "skip=4 delims=" %%F in ('dir /B /A:-D /O:-D "*.*"') do (
rem // Verify whether the last modification date is at least seven days ago:
for /F "delims=" %%I in ('
2^> nul forfiles /P "%%~dpF." /M "%%~nxF" /D -7 /C "cmd /C echo @path"
') do (
ECHO del "%%I"
)
)
popd
ECHO
验证正确的输出后删除大写字母。
推荐阅读
- r - 如何使用表访问数据集的交集?
- sql - 如何将表中的数据插入 XML 表
- vue.js - 为什么在img、vuejs中使用v-for时轮播不起作用?
- python - 如何验证多个 wtform 字段一起满足条件
- css - 如何使用 css 和 angular7 动态显示文本省略号?
- java - 添加分数 (Java)
- php - cURL (PHP) 有问题
- javascript - 如何在选择选项上获取多个值并使用 ajax 在输入类型中显示?
- sql - SQL Server RTM version is not rounding up number
- go - 重写 goroutine 函数并恢复