标题: [文件操作] [已解决]批处理如何记录文件出现次数? [打印本页]
作者: jzsgyml 时间: 2013-5-3 13:28 标题: [已解决]批处理如何记录文件出现次数?
本帖最后由 jzsgyml 于 2013-5-4 08:32 编辑
某日志文件夹"d:\日志",不断有各种日志被其他程序放进来, 例如 "任务1.log""任务2.log""任务1.log""任务2.log""任务3.log"(会存在重复名称的log)
如果某个名称的日志出现过30次,就move到 "d:\大于30次备份"文件夹,如果小于30次 就move到 “d:\小于30次备份"
我感觉可以这样搞,每次扫描都把当前的名称列表保存在d:\temp.txt,这样d:\temp.txt的内容应该如下- 任务1.log
- 任务2.log
- 任务1.log
- 任务1.log
- 任务2.log
- 任务4.log
- 任务1.log
- 任务2.log
- 任务3.log
- 任务4.log
- 任务1.log
- 任务2.log
- 任务3.log
复制代码
再次去搜索例如 任务3.log 出现过多少次,就清楚了- dir d:\日志 得到全部文件名称列表 >>d:\temp.txt
- 依次查询刚才得到的文件名,在temp.txt的出现次数
- if 大于30 move 到d:\大于30次备份
- else d:\小于30次备份
复制代码
"
请问怎么转化为批处理代码?O(∩_∩)O谢谢
----------------
回复1楼并且补充,系统是不允许同名的,因此这个批处理是不断在监控这个文件夹,例如加个循环,60秒扫描一次- :start
- dir.....
- if....
- move....
- ping 60秒
- goto start
复制代码
因此,这60秒有日志丢进来,就被他移动到指定文件夹了,再有就再丢,设置30次,大致意思就是30分钟后,某个日志还在生成,就丢到另外一个文件夹的功能
作者: BAT-VBS 时间: 2013-5-3 13:47
例如 "任务1.log""任务2.log""任务1.log""任务2.log""任务3.log"(会存在重复名称的log)
系统是不允许同名文件放在同一个目录下的,你是如何实现的?
作者: jzsgyml 时间: 2013-5-3 16:35
本帖最后由 jzsgyml 于 2013-5-3 16:41 编辑
回复 2# BAT-VBS
系统是不允许同名的,因此这个批处理是不断在监控这个文件夹,例如加个循环,60秒扫描一次,60秒就清空了该文件夹,再有日志就又可以放进去了。再说了就算他不清空,日志也会追加保存在这个文件夹。
该方案的作用其实是通过监控日志,实现30个60秒后,这个日志还在生成,就属于异常日志,记录到“大于30次文件夹”
而且这个监控具有动态的功能,只有一个新日志产生,他的日志名称就被记录,从产生的时间开始算起,变相利用了批处理的有关功能
作者: BAT-VBS 时间: 2013-5-3 18:08
- @echo off
- setlocal enabledelayedexpansion
- :loop
- for %%a in (*.log) do (
- set /a _%%a+=1
- if !_%%a! gtr 30 (
- move /y "%%a" "D:\大于30次备份"
- ) else (
- move /y "%%a" "D:\小于30次备份"
- )
- )
- ping -n 60 127.1 > nul
- goto :loop
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |