[已解决,并附代码]写了个易语言日志,请问如何写删除30天前的日志文件?
本帖最后由 ps1989 于 2020-4-12 21:36 编辑日志源码主要学习内容:
1.服务器获取时间节点
2.子程序及其参数的应用
3.常量表的应用
4.判断、如果、如果真的应用
5.写到文件与读入文件的应用
6.创建目录、判断循环首、寻找文件等的应用
日志代码:
..版本 2
.支持库 internet
.程序集 窗口程序集_启动窗口
.子程序 __启动窗口_创建完毕
目录说明 ()
日志记录并显示 (“软件启动成功!”, “软件启动成功!” + #换行符 + “接下来的内容都将被日志记录,并保存至目录下的《日志文件》文件夹!”)
.子程序 日志记录并显示
.参数 记录内容, 文本型
.参数 显示内容, 文本型, 可空
.局部变量 分隔符, 文本型
.局部变量 存储路径, 文本型
存储路径 = 取运行目录 () + “\日志文件\” + 时间到文本 (取现行时间 (), 2) + “-日志.txt”
分隔符 = “------------------------------------------------------------------------------”
.判断开始 (到文本 (读入文件 (存储路径)) ≠ “”)
写到文件 (存储路径, 到字节集 (到文本 (读入文件 (存储路径)) + #换行符 + 分隔符 + #换行符 + 时间到文本 (取现行时间 (), 3) + #换行符 + 记录内容))
.默认
写到文件 (存储路径, 到字节集 (分隔符 + #换行符 + 时间到文本 (取现行时间 (), 3) + #换行符 + 记录内容))
.判断结束
.如果真 (显示内容 ≠ “”)
.如果 (编辑框1.内容 ≠ “”)
编辑框1.加入文本 (#换行符 + #换行符 + 时间到文本 (取现行时间 (), 2) + “ ” + 时间到文本 (取现行时间 (), 3) + #换行符 + #换行符 + 显示内容)
.否则
编辑框1.加入文本 (时间到文本 (取现行时间 (), 2) + “ ” + 时间到文本 (取现行时间 (), 3) + #换行符 + #换行符 + 显示内容)
.如果结束
.如果真结束
.子程序 _按钮1_被单击
日志记录并显示 (“按钮1 被单击!”, “按钮1 被单击!”)
.子程序 _按钮2_被单击
日志记录并显示 (“按钮2 被单击!”, “按钮2 被单击!”)
.子程序 _按钮3_被单击
日志记录并显示 (“按钮3 被单击!”, “按钮3 被单击!”)
.子程序 _按钮4_被单击
日志记录并显示 (“按钮4 被单击!”, “按钮4 被单击!”)
.子程序 __启动窗口_将被销毁
日志记录并显示 (“软件手动关闭!”, )
.子程序 _按钮5_被单击
.局部变量 文件时间, 日期时间型
.局部变量 服务器时间, 日期时间型
.局部变量 找到的文件, 文本型
.局部变量 文件夹路径, 文本型
.局部变量 所找文件的路径, 文本型
.局部变量 超过天数, 文本型
.局部变量 删除数量, 整数型
文件夹路径 = 取运行目录 () + “\日志文件\”
找到的文件 = 寻找文件 (文件夹路径 + “*-日志.txt”, )
服务器时间 = 到时间 (到文本 (HTTP读文件 (“https://你自己的服务器/sj.php”)))
超过天数 = 编辑框2.内容
日志记录并显示 (“开始执行删除日志任务!”, “开始执行删除日志任务!”)
.如果 (服务器时间 ≠ 到时间 (“01000101”))
.判断循环首 (找到的文件 ≠ “”)
所找文件的路径 = 文件夹路径 + 找到的文件
' 输出调试文本 (到文本 (取文件时间 (所找文件的路径)))
文件时间 = 取文件时间 (所找文件的路径)
.如果真 (取时间间隔 (服务器时间, 文件时间, #日) > 到整数 (超过天数))
删除文件 (所找文件的路径)
删除数量 = 删除数量 + 1
日志记录并显示 (“成功删除超过” + 超过天数 + “天的日志文件-” + 找到的文件, “成功删除超过” + 超过天数 + “天的日志文件-” + 找到的文件)
' 输出调试文本 (到文本 (取时间间隔 (系统时间, 文件时间, #日)))
.如果真结束
找到的文件 = 寻找文件 (, )
.判断循环尾 ()
.如果 (删除数量 = 0)
日志记录并显示 (“任务失败!未能删除” + 超过天数 + “天前日志,因为没有可删除文件!”, “任务失败!未能删除” + 超过天数 + “天前日志,因为没有可删除文件!”)
信息框 (“未找到超过” + 超过天数 + “天的日志文件!”, 16, “删除失败”, )
.否则
日志记录并显示 (“删除日志任务执行完毕!共删除” + 到文本 (删除数量) + “个日志。”, “删除日志任务执行完毕!共删除” + 到文本 (删除数量) + “个日志。”)
信息框 (“删除成功!共删除” + 到文本 (删除数量) + “个日志。”, 0, , )
.如果结束
.否则
日志记录并显示 (“任务失败!未能删除” + 超过天数 + “天前日志,因为与服务器通讯失败!”, “任务失败!未能删除” + 超过天数 + “天前日志,因与服务器通讯失败!”)
信息框 (“未能获取当前服务器时间或请检查您的网络!”, 16, “与服务器通讯失败!”, )
.如果结束
.子程序 目录说明
.如果真 (到文本 (读入文件 (取运行目录 () + “\日志文件\目录说明.txt”)) = “”)
创建目录 (取运行目录 () + “\日志文件”)
写到文件 (取运行目录 () + “\日志文件\目录说明.txt”, 到字节集 (#日志目录说明))
.如果真结束
.如果真 (到文本 (读入文件 (取运行目录 () + “\数据库\目录说明.txt”)) = “”)
创建目录 (取运行目录 () + “\数据库”)
写到文件 (取运行目录 () + “\数据库\目录说明.txt”, 到字节集 (#数据库目录说明))
.如果真结束
返回 ()
获取服务器时间代码
<?php
date_default_timezone_set('PRC'); //设置时区为中国
echo Date("YmdHis") //你可以自己改需要显示的格式,Y年、m月、d日、H时、i分、s秒,但是如果仅是为了让软件获取时间节点,最简单的还是什么都不加,利用代码“到时间()"直接获取文本值
?>
.版本 2
.程序集 程序集1
.程序集变量 mLogArr, 文本型, , "0"
.子程序 _启动子程序, 整数型, , 本子程序在程序启动后最先执行
main ()
返回 (0)' 可以根据您的需要返回任意数值
.子程序 main
遍历日志文件 ()
判断日期 ()
.子程序 遍历日志文件
文件_枚举 (“.\Logs\”, “*.txt”, mLogArr, 真, , )
.子程序 判断日期
.局部变量 i, 整数型
.局部变量 txtName, 文本型
.局部变量 timeInterval, 整数型
.计次循环首 (取数组成员数 (mLogArr), i)
txtName = 文件_取文件名 (mLogArr , 假)' 20200216
timeInterval = 到整数 (取时间间隔 (取现行时间 (), 到时间 (txtName + “000000”), #日))
.如果真 (timeInterval > 30)
文件_删除 (mLogArr )
.如果真结束
.计次循环尾 ()
大致是这样 没调试 有bug的话自己修一下
模块是精易模块
那天给你写了 你没看到 第2个问题是因为结束之前还会调用一次位置改变 longsui48 发表于 2020-3-19 23:55
.版本 2
.程序集 程序集1
精易模块还没开始学着用,不用模块怎么写呢?大佬,劳烦告诉下,谢谢了 longsui48 发表于 2020-3-19 23:55
.版本 2
.程序集 程序集1
您这么写,我这小白都看不懂,返回 (0)' 可以根据您的需要返回任意数值
这数值的含义是什么?很多不是易语言本身的代码没有提示,对于学习中的我来说,理解不了呀 ps1989 发表于 2020-3-20 00:09
您这么写,我这小白都看不懂,返回 (0)' 可以根据您的需要返回任意数值
哦哦 这个东西没用的 只是启动方式不一样 你可以不用管的
精易模块是个好东西 可以省去你很多很多时间 你可以去用用看 去比对一个文件的最后修改时间 和本地的时间做对比或者网络上的时间,用目前的时间减去文件被修改的日期呢,把他们都变成时间戳 然后比较差了多少,判断是距离多少天之前修改的,不知道可不可以,我帖子有个不限制可行的文章就是这样判断一个消息的实时性的,我说的也不一定对,可能有更好的解决办法 ps1989 发表于 2020-3-20 00:01
精易模块还没开始学着用,不用模块怎么写呢?大佬,劳烦告诉下,谢谢了
不用模块 就是寻找目录之类的命令 已经很久没用过了 你可以找找 不然的 用寻找文件命令遍历自己的文件夹所以文件名然后取时间间隔对比就可以了。 longsui48 发表于 2020-3-20 00:20
哦哦 这个东西没用的 只是启动方式不一样 你可以不用管的
精易模块是个好东西 可以省去你很多很多时间...
刚开始学,一步一步来哈,基本语言都不会,暂时不想着偷懒!!
页:
[1]