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

[文件操作] [已解决]批处理如何监控某盘,一旦出现某文件,系统就会出反应

最近工作上,遇到一个问题。在E盘会产生一个如abc.dat格式的文件,当这个文件大到60K以上时,就会导致系统运行的主程序网断,影响数据传输。退出主程序,网络也是畅通的。
恳求各位高手,让通过批处理或者VBA实现对E盘的监控,我想实现五种任意一种,来一劳永逸地解决这一难题。
【改名】
方案一
循环监控E盘,一旦产生该文件,立即自动改名。因为该文件可能十天半月出现一次,希望能实现出现一次,改一次名,并且每次名字最好顺延。比如第一次是abc0.dat,第二次就是abc1.dat
方案二
循环监控E盘,当该文件产生到15K时,立即自动改名。以后出现一次,改一次名,每次名字顺延。
【移动】
方案三
循环监控E盘,一旦产生该文件,立即自动移动到G盘新建立的abc文件夹。以后每次出现一次,就移动一次,每次文件名顺延。
方案四
循环监控E盘,当该文件产生到15K时,立即自动移动到G盘新建立的abc文件夹。以后该文件每达到15K,就移动一次,每次文件名顺延。
【阻止】
循环监控E盘,一旦该文件出现,立即删除。或者是循环监控E盘,随时阻止该文件的出现。
万望各位大佬、高手在闲暇时,多多指教,不胜感激。

本帖最后由 福垊 于 2021-4-9 17:39 编辑

终于搞定了

TOP

回复 22# hlzj88 非常感谢。

TOP

已经结贴,水一个,按第五种模式
  1. @echo off&&setlocal enabledelayedexpansion
  2. set p=0
  3. set /a p+=1
  4. :xh
  5. if exist abc.dat (
  6.    if exist abc!p!.dat (set /a p+=1&&goto xh) else (
  7.      ren abc.dat abc!p!.dat
  8.      echo 发现abc.dat并改名 %time%
  9.      ping /n 180 127.1>nul
  10.      goto xh)) else (
  11. echo 等待产生abc.dat %time%
  12. ping /n 180 127.1>nul
  13. goto xh)
复制代码
说明   1 无论是否有abc.dat,都按每3分钟循环检测是否存在。3分钟检测想必文件也大不了多少。   2 有abc.dat,自动判断并按序改名,不是删除。
1

评分人数

目的,学习批处理

TOP

回复 20# qixiaobin0715
原来如此

TOP

15×1024=15360

TOP

回复 16# newgain


set ntime=%date:~0,4%-%date:~5,2%-%date:~8,2%-%time:~0,2%-%time:~3,2%-%time:~6,2%
【请问这是设定什么时间和日期,数值的意思是什么?】
for /f "delims=" %%i in ("e:\abc.dat") do (
【请问,这里的分隔符,切割文本的作用是什么?】
if %%~zi geq 15360 (
如果文件大于等于15K,可这里的360是什么意思呢?360天吗?
还请高手大佬指教,谢谢。

TOP

回复 15# newgain


    非常感谢,应该会有办法的。

TOP

回复 13# qixiaobin0715


    刚才测试了一下,效果很好,只是到了该重命名009时,提示存在一个重命名文件,新产生的abc.bat,无法改名为abc009.bat 。

TOP

回复 16# newgain


    经测试,效果不错,按时间排序,谢谢。

TOP

本帖最后由 newgain 于 2021-4-6 01:18 编辑
  1. :start
  2. @echo off
  3. set ntime=%date:~0,4%-%date:~5,2%-%date:~8,2%-%time:~0,2%-%time:~3,2%-%time:~6,2%
  4. for /f "delims=" %%i in ("e:\abc.dat") do (
  5. if %%~zi geq 15360 (
  6.            move e:\abc.dat g:\abc\"%ntime%.dat"
  7.      ) else (
  8.         timeout 15
  9.     ))
  10. cls
  11. goto start
复制代码
说明:
检查e:\abc.dat文件,大于等于15K,则移动此文件到G:\abc文件夹,并依时间重新命名,防止命名冲突。文件小于15K不做处理,15秒检查一次。
注意事项:g:\abc文件夹必须存在,否则会有报错。
风险:
使用中到文件是否可以移动,未测试。
其他风险,未知。
建议:根据文件大小增长速度适当调节检测时间间隔,修改第8行 timeout 15
1

评分人数

TOP

本帖最后由 newgain 于 2021-4-5 22:15 编辑
  1. :start
  2. @echo off
  3. if exist e:\abc.dat (
  4.         ren "e:\abc.dat" "abc1.dat"
  5.       >nul 2>nul del /s /q e:\abc1.dat
  6.     ) else (
  7.         echo 未找到文件,15秒后继续
  8.         timeout 15
  9.     )
  10. cls
  11. goto start
复制代码


先改名为abc1,后删除,测试没问题. 至于你说到改名为1 2 3,实力不允许,搞不定。

TOP

回复 13# qixiaobin0715会有重复文件提示

TOP

回复 11# 福垊那么 改名并转移到其他目录,跟删除也没区别呀

TOP

回复 7# newgain


    有影响啊,会导致主程序网断的。

TOP

返回列表