定时删除指定文件夹及子文件夹 确保硬盘不会被占满 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实现删除文件中的指定内容吧... 目录1. 项目背景详细介绍2. 项目需求详细介绍2.1 功能需求2.2 非功能需求3. 相关技术详细介绍3.1 Ja

苹果macOS 26 Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色

《苹果macOS26Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色》在整体系统设计方面,macOS26采用了全新的玻璃质感视觉风格,应用于Dock栏、应用图标以及桌面小部件等多个界面... 科技媒体 MACRumors 昨日(6 月 13 日)发布博文,报道称在 macOS 26 Tahoe 中

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

Python pip下载包及所有依赖到指定文件夹的步骤说明

《Pythonpip下载包及所有依赖到指定文件夹的步骤说明》为了方便开发和部署,我们常常需要将Python项目所依赖的第三方包导出到本地文件夹中,:本文主要介绍Pythonpip下载包及所有依... 目录步骤说明命令格式示例参数说明离线安装方法注意事项总结要使用pip下载包及其所有依赖到指定文件夹,请按照以

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir

C#如何去掉文件夹或文件名非法字符

《C#如何去掉文件夹或文件名非法字符》:本文主要介绍C#如何去掉文件夹或文件名非法字符的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#去掉文件夹或文件名非法字符net类库提供了非法字符的数组这里还有个小窍门总结C#去掉文件夹或文件名非法字符实现有输入字

python如何生成指定文件大小

《python如何生成指定文件大小》:本文主要介绍python如何生成指定文件大小的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python生成指定文件大小方法一(速度最快)方法二(中等速度)方法三(生成可读文本文件–较慢)方法四(使用内存映射高效生成

使用C#删除Excel表格中的重复行数据的代码详解

《使用C#删除Excel表格中的重复行数据的代码详解》重复行是指在Excel表格中完全相同的多行数据,删除这些重复行至关重要,因为它们不仅会干扰数据分析,还可能导致错误的决策和结论,所以本文给大家介绍... 目录简介使用工具C# 删除Excel工作表中的重复行语法工作原理实现代码C# 删除指定Excel单元

Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)

《Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)》本文主要介绍了Golang分布式锁实现,采用Redis+Lua脚本确保原子性,持可重入和自动续期,用于防止超卖及重复下单,具有一定... 目录1 概念应用场景分布式锁必备特性2 思路分析宕机与过期防止误删keyLua保证原子性可重入锁自动

Python+PyQt5实现文件夹结构映射工具

《Python+PyQt5实现文件夹结构映射工具》在日常工作中,我们经常需要对文件夹结构进行复制和备份,本文将带来一款基于PyQt5开发的文件夹结构映射工具,感兴趣的小伙伴可以跟随小编一起学习一下... 目录概述功能亮点展示效果软件使用步骤代码解析1. 主窗口设计(FolderCopyApp)2. 拖拽路径