批处理脚本:判断某个文件夹超过5G时,清空该文件夹中2天前的文件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了批处理脚本:判断某个文件夹超过5G时,清空该文件夹中2天前的文件?相关的知识,希望对你有一定的参考价值。

批处理脚本:判断某个文件夹超过1G时,清空该文件夹中2天前的文件

参考技术A

不清楚你的实际文件/情况,仅以问题中的说明及猜测为据;以下代码复制粘贴到记事本,另存为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

shell脚本中的逻辑判断文件目录属性判断 if特殊用法case判断

shell脚本中的逻辑判断

技术分享图片

shell脚本中很多都是逻辑判断,判断某个数值,判断某一个文件,或者某个目录,最后真对判断的某个结果再去做一些操作,在shll脚本中到处都是逻辑判断,如果没有判断就没有办法去做一些操作,不然只能敲命令了,

shell中逻辑判断的语法

  • 最常见的语法 :if 条件 ; then 语句; fi 他的格式比较特殊if和fi是相对的,正好对应的,then是if怎么样然后怎么样,这个语法读起来是如果怎么样然后怎么样

技术分享图片

如果a的值大于3软后怎么样

[[email protected] ~]# a=5
[[email protected] ~]# if [ $a -gt 3 ]; then echo ok; fi

技术分享图片

把上图写成shll脚本

技术分享图片

技术分享图片

  • if 条件; then 语句; else 语句; fis是满足条件怎么样,不满足又怎么样

a=5,如果a的值大于3,然后echo ok,如果不大于3就echo nook

技术分享图片

技术分享图片

  • if …; then … ;elif …; then …; else …; fi a=5如果a大于1,然后echo大于1,在大于1的基础上然后小于6,然后echo小于6并且大于1,如果这两个条件都不满足就nook

技术分享图片

技术分享图片

  • 逻辑判断表达式:if [ $a -gt $b ]; if [ $a -lt 5 ]; if [ $b -eq 10 ]等 -gt (>); -lt(<); -ge(>=); -le(<=);-eq(==); -ne(!=) 注意到处都是空格

大于用-gt 小于用-lt 等于-eq 不等于-nq
条件可以写成多个中间用双&的符号,或者用||符号

文件目录属性判断

技术分享图片

  • 在shll中通常跟文件,目录去打交道,所以说对文件和目录的判断非常的重要,
    我想判断一个文件是否存在,和大小,是不是空是不是可写,在shll脚本中都是可以做到的

[ -f file ]判断是否是普通文件,且存在

技术分享图片
技术分享图片

技术分享图片

[ -d file ] 判断是否是目录,且存在

技术分享图片

技术分享图片

[ -e file ] 判断文件或目录是否存在

技术分享图片

技术分享图片

[ -r file ] 判断文件是否可读

技术分享图片

技术分享图片

[ -w file ] 判断文件是否可写

技术分享图片

技术分享图片

[ -x file ] 判断文件是否可执行

技术分享图片

技术分享图片

if特殊用法

技术分享图片

if [ -z "$a" ]??这个表示当变量a的值是否为空

技术分享图片

有的时候想的不是太完美,万一删除这个文件,就会报错,这个文件没有看下图报错,

技术分享图片

判断下$n有没有数值,有数值的时候再去做判断。

技术分享图片

技术分享图片

技术分享图片

技术分享图片

case判断

**在shell中还有一种逻辑判断叫做case,这个语句比if这些还复杂一些,

技术分享图片

写个脚本试一试case的作用,这个脚本的目的是让一个用户输入一个数字然后我们用这个脚本去判断数字的范围,比如让你输入0到100,这个数字表示一个同学的分数,当你输入这个数字我们就要判断出来,这个同学的分数是什么样的级别,是优秀还是及格,或者不及格

技术分享图片

技术分享图片

技术分享图片

以上是关于批处理脚本:判断某个文件夹超过5G时,清空该文件夹中2天前的文件?的主要内容,如果未能解决你的问题,请参考以下文章

要在一台主机上执行shell脚本判断另一台上的某个文件是不是存在,这个shell语句该怎么写?

判断文件的更改时间是否超过24小时python脚本

如何在mysql中清空某个数据库文件?

在 bash 脚本中执行命令,直到输出超过某个值

用于将文件解压缩到某个文件夹的批处理脚本

shell的if命令如何判断一个文件中所含指定字符串?