定时删除指定文件夹及子文件夹 确保硬盘不会被占满 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

相关文章

java实现延迟/超时/定时问题

《java实现延迟/超时/定时问题》:本文主要介绍java实现延迟/超时/定时问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java实现延迟/超时/定时java 每间隔5秒执行一次,一共执行5次然后结束scheduleAtFixedRate 和 schedu

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

macOS无效Launchpad图标轻松删除的4 种实用方法

《macOS无效Launchpad图标轻松删除的4种实用方法》mac中不在appstore上下载的应用经常在删除后它的图标还残留在launchpad中,并且长按图标也不会出现删除符号,下面解决这个问... 在 MACOS 上,Launchpad(也就是「启动台」)是一个便捷的 App 启动工具。但有时候,应

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

使用Python实现获取网页指定内容

《使用Python实现获取网页指定内容》在当今互联网时代,网页数据抓取是一项非常重要的技能,本文将带你从零开始学习如何使用Python获取网页中的指定内容,希望对大家有所帮助... 目录引言1. 网页抓取的基本概念2. python中的网页抓取库3. 安装必要的库4. 发送HTTP请求并获取网页内容5. 解

一文教你Python引入其他文件夹下的.py文件

《一文教你Python引入其他文件夹下的.py文件》这篇文章主要为大家详细介绍了如何在Python中引入其他文件夹里的.py文件,并探讨几种常见的实现方式,有需要的小伙伴可以根据需求进行选择... 目录1. 使用sys.path动态添加路径2. 使用相对导入(适用于包结构)3. 使用pythonPATH环境

C++从序列容器中删除元素的四种方法

《C++从序列容器中删除元素的四种方法》删除元素的方法在序列容器和关联容器之间是非常不同的,在序列容器中,vector和string是最常用的,但这里也会介绍deque和list以供全面了解,尽管在一... 目录一、简介二、移除给定位置的元素三、移除与某个值相等的元素3.1、序列容器vector、deque

C++原地删除有序数组重复项的N种方法

《C++原地删除有序数组重复项的N种方法》给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度,不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(... 目录一、问题二、问题分析三、算法实现四、问题变体:最多保留两次五、分析和代码实现5.1、问题分析5.