定时删除指定文件夹及子文件夹 确保硬盘不会被占满 bat脚本

2024-02-04 12:20

本文主要是介绍定时删除指定文件夹及子文件夹 确保硬盘不会被占满 bat脚本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

如果你想要一个批处理脚本,该脚本可以在定时删除指定文件夹及其子文件夹的同时确保硬盘不会被占满,你可以使用以下脚本:


@echo off
set "target_folder=C:\path\to\folder"
set "days_to_keep=7"
set "max_space_to_use=50" REM 最大使用50%的硬盘空间REM 获取目标文件夹的大小和硬盘总大小
for /d %%d in ("%target_folder%*") do (for /f "tokens=1,2 delims=:" %%a in ('dir /s "%%d" ^| findstr /r /c:"Size: "') do (set "folder_size=%%b")for /f "tokens=1,2 delims=:" %%a in ('wmic logicaldisk where drivetype=3 ^| findstr /r /c:"Size^: "') do (set "total_space=%%b")
)REM 计算需要删除的文件大小和文件数量,以确保硬盘不会超过最大使用空间
set "files_to_delete=0"
set "space_to_use=0"
for /d %%d in ("%target_folder%*") do (for /r "%%d" %%f in (*) do (if /i "%%~nxf" lss "today - %days_to_keep% days" (set /a "files_to_delete+=1"for /f "tokens=1,2 delims=:" %%a in ('dir /s "%%f" ^| findstr /r /c:"Size: "') do (set "file_size=%%b")set /a "space_to_use+=file_size"))
)REM 计算需要删除的文件数量和大小,以保持指定硬盘空间和防止硬盘被占满
set "files_to_keep=0"
set "space_to_use_bytes=%max_space_to_use% * 1024 * 1024" REM 转换为字节,这里我们假设最大使用50%的硬盘空间
:loop
if %space_to_use% gtr %space_to_use_bytes% (set /a "files_to_keep+=1"set /a "space_to_use-=space_to_use/files_to_keep" REM 减去相应的大小if %space_to_use% lss %space_to_use_bytes% ( REM 如果剩余空间小于允许的最大使用空间,跳出循环goto endscript) else (goto loop)
) else (goto endscript
)
:endscriptecho 删除目标文件夹及其子文件夹中的早于 %days_to_keep% 天的文件...
for /d %%d in ("%target_folder%*") do (for /r "%%d" %%f in (*) do (if /i "%%~nxf" lss "today - %days_to_keep% days" del "%%f" /q /f)
)
echo 删除完成。共删除了 %files_to_delete% 个文件,保留了足够的硬盘空间。按任意键退出...
pause >nul

这个脚本首先获取目标文件夹的大小和硬盘的总大小。然后,它计算需要删除的文件大小和文件数量,以确保硬盘不会超过最大使用空间。接下来,它循环地删除文件,直到剩余空间等于或小于最大使用空间为止。最后,它删除早于指定天数的文件,并显示已删除的文件数量和保留的硬盘空间。

这篇关于定时删除指定文件夹及子文件夹 确保硬盘不会被占满 bat脚本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/677485

相关文章

linux下多个硬盘划分到同一挂载点问题

《linux下多个硬盘划分到同一挂载点问题》在Linux系统中,将多个硬盘划分到同一挂载点需要通过逻辑卷管理(LVM)来实现,首先,需要将物理存储设备(如硬盘分区)创建为物理卷,然后,将这些物理卷组成... 目录linux下多个硬盘划分到同一挂载点需要明确的几个概念硬盘插上默认的是非lvm总结Linux下多

docker如何删除悬空镜像

《docker如何删除悬空镜像》文章介绍了如何使用Docker命令删除悬空镜像,以提高服务器空间利用率,通过使用dockerimage命令结合filter和awk工具,可以过滤出没有Tag的镜像,并将... 目录docChina编程ker删除悬空镜像前言悬空镜像docker官方提供的方式自定义方式总结docker

使用Python在Excel中插入、修改、提取和删除超链接

《使用Python在Excel中插入、修改、提取和删除超链接》超链接是Excel中的常用功能,通过点击超链接可以快速跳转到外部网站、本地文件或工作表中的特定单元格,有效提升数据访问的效率和用户体验,这... 目录引言使用工具python在Excel中插入超链接Python修改Excel中的超链接Python

10个Python自动化办公的脚本分享

《10个Python自动化办公的脚本分享》在日常办公中,我们常常会被繁琐、重复的任务占据大量时间,本文为大家分享了10个实用的Python自动化办公案例及源码,希望对大家有所帮助... 目录1. 批量处理 Excel 文件2. 自动发送邮件3. 批量重命名文件4. 数据清洗5. 生成 PPT6. 自动化测试

使用Java实现一个解析CURL脚本小工具

《使用Java实现一个解析CURL脚本小工具》文章介绍了如何使用Java实现一个解析CURL脚本的工具,该工具可以将CURL脚本中的Header解析为KVMap结构,获取URL路径、请求类型,解析UR... 目录使用示例实现原理具体实现CurlParserUtilCurlEntityICurlHandler

10个Python Excel自动化脚本分享

《10个PythonExcel自动化脚本分享》在数据处理和分析的过程中,Excel文件是我们日常工作中常见的格式,本文将分享10个实用的Excel自动化脚本,希望可以帮助大家更轻松地掌握这些技能... 目录1. Excel单元格批量填充2. 设置行高与列宽3. 根据条件删除行4. 创建新的Excel工作表5

Spring Boot 整合 ShedLock 处理定时任务重复执行的问题小结

《SpringBoot整合ShedLock处理定时任务重复执行的问题小结》ShedLock是解决分布式系统中定时任务重复执行问题的Java库,通过在数据库中加锁,确保只有一个节点在指定时间执行... 目录前言什么是 ShedLock?ShedLock 的工作原理:定时任务重复执行China编程的问题使用 Shed

Android kotlin语言实现删除文件的解决方案

《Androidkotlin语言实现删除文件的解决方案》:本文主要介绍Androidkotlin语言实现删除文件的解决方案,在项目开发过程中,尤其是需要跨平台协作的项目,那么删除用户指定的文件的... 目录一、前言二、适用环境三、模板内容1.权限申请2.Activity中的模板一、前言在项目开发过程中,尤

使用Python合并 Excel单元格指定行列或单元格范围

《使用Python合并Excel单元格指定行列或单元格范围》合并Excel单元格是Excel数据处理和表格设计中的一项常用操作,本文将介绍如何通过Python合并Excel中的指定行列或单... 目录python Excel库安装Python合并Excel 中的指定行Python合并Excel 中的指定列P

C#实现添加/替换/提取或删除Excel中的图片

《C#实现添加/替换/提取或删除Excel中的图片》在Excel中插入与数据相关的图片,能将关键数据或信息以更直观的方式呈现出来,使文档更加美观,下面我们来看看如何在C#中实现添加/替换/提取或删除E... 在Excandroidel中插入与数据相关的图片,能将关键数据或信息以更直观的方式呈现出来,使文档更