批处理脚本:判断某个文件夹超过5G时,清空该文件夹中2天前的文件?
发布网友
发布时间:2023-03-19 17:44
我来回答
共1个回答
热心网友
时间:2023-04-24 13:33
不清楚你的实际文件/情况,仅以问题中的说明及猜测为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI
<# :
cls&echo off&cd /d "%~dp0"&mode con lines=3000
rem 检测一个指定文件夹的容量是否超过指定数值大小,并删除该文件夹下指定天数之前的文件
set #=Any question&set _=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%_% %z%
powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0'|Out-String|Invoke-Expression"
echo;%#% +%$%%$%/%_% %z%
pause
exit
#>
$folder="D:\xxx\某文件夹";
$maxsize=5000000000;
$agoday=-2;
if(-not (test-path -literal $folder)){write-host ('"'+$folder+'" path error or not exist');exit;}
$totalsize=0;
$lastday=(get-date).AddDays($agoday).ToString('yyyy-MM-dd');
$arr=New-Object -TypeName System.Collections.ArrayList;
$files=@(dir -literal $folder -recurse|?{$_ -is [System.IO.FileInfo]});
for($i=0;$i -lt $files.length;$i++){
$totalsize=$totalsize+$files[$i].length;
$wt=$files[$i].LastWriteTime.toString('yyyy-MM-dd');
if($wt -le $lastday){
$it='[{0}]{1}' -f $wt,$files[$i].FullName;
[void]$arr.add($it);
}
}
write-host ('总大小='+$totalsize.toString());
if($totalsize -gt $maxsize){if($arr.count -ge 1){$arr}}