找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 73057|回复: 23

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

[复制链接]
发表于 2021-4-4 23:30:35 | 显示全部楼层 |阅读模式
最近工作上,遇到一个问题。在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-5 11:30:56 | 显示全部楼层
@echo off
cls
if exist e:\abc.dat del /q e:\abc.dat

评分

参与人数 1技术 +1 收起 理由
福垊 + 1 谢谢

查看全部评分

发表于 2021-4-5 14:02:24 | 显示全部楼层
:start
if exist e:\abc.dat (
        del e:\abc.dat
        goto start
) else (
        rem 不存在,休息15秒,再检查
        timeout 15
        goto start
)
楼主,保存为bat后缀文件,放到启动文件夹,开机会自启动,就行了,我的启动文件夹目录是"C:\Users\xxx(用户名)\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup",供你参考

评分

参与人数 1技术 +1 收起 理由
福垊 + 1 谢谢

查看全部评分

 楼主| 发表于 2021-4-5 15:38:13 | 显示全部楼层
本帖最后由 福垊 于 2021-4-5 15:59 编辑

回复 2# binghejin
经测试,效果很好,效率很高。只是这个bat文件,删除之后,影响系统,那么能不能对它改名改名或移动呢?
再次感谢。
 楼主| 发表于 2021-4-5 15:39:09 | 显示全部楼层
本帖最后由 福垊 于 2021-4-5 16:03 编辑

回复 3# 追梦人
经亲测很好很强大,谢谢。请问能不能将删除改为重命名或者移动呢?因为删除该文件后,影响系统。另外是超过15K,不是15秒。
 楼主| 发表于 2021-4-5 16:21:53 | 显示全部楼层
本帖最后由 福垊 于 2021-4-5 16:23 编辑

@追梦人 大神,我简单修订了您的代码,来实现重命名。
:start
if exist e:\abc.dat (
         ren abc.dat abc0.dat
        goto start
) else (
        rem 不存在,休息15秒,再检查
        timeout 15
        goto start
)

可只要一出现就会顺延重命名怎么实现呢?
可如何再出现一个abc.dat,我想把它命名为abc1 .bat怎么实现。
总之,只要出现abc.dat,就立即重命名,并以此为abc1、 abc2、abc3……,这样循环下去。
发表于 2021-4-5 18:16:05 | 显示全部楼层
既然可以改名 那么这个文件对于程序运行时没有影响的,直接批处理删除就好,或者自己建一个同名文件,设置只读。
 楼主| 发表于 2021-4-5 18:17:43 | 显示全部楼层
:start
if exist e:\abc.dat (
        ren abc.dat abc0.dat
ren abc.dat abc1.dat
ren abc.dat abc2.dat
ren abc.dat abc3.dat
ren abc.dat abc4.dat
ren abc.dat abc5.dat
ren abc.dat abc6.dat
ren abc.dat abc7.dat
ren abc.dat abc8.dat
ren abc.dat abc9.dat
ren abc.dat abc10.dat
ren abc.dat abc11.dat
ren abc.dat abc12.dat
        goto start
) else (
        rem 不存在,休息15秒,再检查
        timeout 15
        goto start
)

没有好办法,只有通过笨法来实现了。

@追梦人 @binghejin
发表于 2021-4-5 18:22:23 | 显示全部楼层
  1. @Echo off&SetLocal EnableDelayedExpansion&set n=0
  2. :start
  3. if exist e:\abc.dat (set /a n=+1&ren e:\abc.dat abc!n!.dat)else timeout 15
  4. goto start
复制代码
 楼主| 发表于 2021-4-5 18:25:03 | 显示全部楼层
回复 9# smss

大佬,产生的第一个abc.bat能修改为abc0.bat。产生第二abc.bat提示重命名冲突,而不是改为abc1.bat。还请大佬再看看,谢谢。
 楼主| 发表于 2021-4-5 18:25:49 | 显示全部楼层
回复 7# newgain


    有影响啊,会导致主程序网断的。
发表于 2021-4-5 21:06:39 | 显示全部楼层
回复 11# 福垊那么 改名并转移到其他目录,跟删除也没区别呀
发表于 2021-4-5 21:56:04 | 显示全部楼层
回复 13# qixiaobin0715会有重复文件提示
发表于 2021-4-5 22:10:19 | 显示全部楼层
本帖最后由 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,实力不允许,搞不定。
发表于 2021-4-5 23:27:16 | 显示全部楼层
本帖最后由 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技术 +1 收起 理由
福垊 + 1 谢谢

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 15:19 , Processed in 0.012794 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表