[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] [已解决]批处理如何记录文件出现次数?

本帖最后由 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. 任务1.log
  2. 任务2.log
  3. 任务1.log
  4. 任务1.log
  5. 任务2.log
  6. 任务4.log
  7. 任务1.log
  8. 任务2.log
  9. 任务3.log
  10. 任务4.log
  11. 任务1.log
  12. 任务2.log
  13. 任务3.log
复制代码
再次去搜索例如 任务3.log 出现过多少次,就清楚了
  1. dir d:\日志 得到全部文件名称列表 >>d:\temp.txt
  2. 依次查询刚才得到的文件名,在temp.txt的出现次数
  3. if 大于30 move 到d:\大于30次备份
  4. else d:\小于30次备份
复制代码
"


请问怎么转化为批处理代码?O(∩_∩)O谢谢

----------------
回复1楼并且补充,系统是不允许同名的,因此这个批处理是不断在监控这个文件夹,例如加个循环,60秒扫描一次
  1. :start
  2. dir.....
  3. if....
  4. move....
  5. ping 60秒
  6. goto start
复制代码
因此,这60秒有日志丢进来,就被他移动到指定文件夹了,再有就再丢,设置30次,大致意思就是30分钟后,某个日志还在生成,就丢到另外一个文件夹的功能
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

例如 "任务1.log""任务2.log""任务1.log""任务2.log""任务3.log"(会存在重复名称的log)

系统是不允许同名文件放在同一个目录下的,你是如何实现的?

TOP

本帖最后由 jzsgyml 于 2013-5-3 16:41 编辑

回复 2# BAT-VBS


    系统是不允许同名的,因此这个批处理是不断在监控这个文件夹,例如加个循环,60秒扫描一次,60秒就清空了该文件夹,再有日志就又可以放进去了。再说了就算他不清空,日志也会追加保存在这个文件夹。

该方案的作用其实是通过监控日志,实现30个60秒后,这个日志还在生成,就属于异常日志,记录到“大于30次文件夹”

而且这个监控具有动态的功能,只有一个新日志产生,他的日志名称就被记录,从产生的时间开始算起,变相利用了批处理的有关功能

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. :loop
  4. for %%a in (*.log) do (
  5.     set /a _%%a+=1
  6.     if !_%%a! gtr 30 (
  7.         move /y "%%a" "D:\大于30次备份"
  8.     ) else (
  9.         move /y "%%a" "D:\小于30次备份"
  10.     )
  11. )
  12. ping -n 60 127.1 > nul
  13. goto :loop
复制代码
1

评分人数

TOP

返回列表