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

[文本处理] (已解决)求助批处理ini文本实时检测内容

[复制链接]
发表于 2023-1-13 22:41:26 | 显示全部楼层 |阅读模式
本帖最后由 linlianboy 于 2023-1-18 22:29 编辑

D\123\config_del.ini这个文件内运行一段时间就会写入异常标志,请问各位有没有办法实时检测这个文件,当出现异常时就将该文件拷贝至D:\456\目录下,后续的实时检测中再检测到异常标志就覆盖
以下为config_del.ini内的内容,第六行的20230111a就是出现的异常标志(异常标志为a-z),如果该ini文件内日期这一列没有出现异常标志就不拷贝至D:\456\目录下(除第六行外,其他行都是正常的数据)
num--1--
游戏路径=C:\Program Files\游戏\11.exe
lebaoshi00----asdasd123456789----1----20230111----0----1----3----1----2----0----0
lebaoshi11----asdasd123456789----1----20230111----0----1----3----1----2----0----0
lebaoshi22----asdasd123456789----1----20230111----0----1----3----1----2----0----0
lebaoshi33----asdasd123456789----1----20230111a----0----1----3----1----2----0----0
lebaoshi44----asdasd123456789----1----20230111----0----1----3----1----2----0----0
lebaoshi55----asdasd123456789----1----20230111----0----1----3----1----2----0----0
lebaoshi66----asdasd123456789----1----20230111----0----1----3----1----2----0----0
lebaoshi77----asdasd123456789----1----20230111----0----1----3----1----2----0----0
lebaoshi88----asdasd123456789----1----20230111----0----1----3----1----2----0----0
baoleshi00----asdasd123456789----1----20230111----0----1----3----1----2----0----0
songzhongtian01----bb123456----1----20230111----0----1----3----1----1----0----0
songzhongtian02----bb123456----1----20230111----0----1----3----1----1----0----0
songzhongtian03----bb123456----1----20230111----0----1----3----1----1----0----0
songzhongtian04----bb123456----1----20230111----0----1----3----1----1----0----0
songzhongtian05----bb123456----1----20230111----0----1----3----1----1----0----0
wanchengdao01----bb123456----1----20230111----0----1----3----1----1----0----0
wanchengdao02----bb123456----1----20230111----0----1----3----1----1----0----0
wanchengdao03----bb123456----1----20230110----0----1----3----1----1----0----0
wanchengdao04----bb123456----1----20230110----0----1----3----1----1----0----0
wanchengdao05----bb123456----1----20230110----0----1----3----1----1----0----0

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2023-1-13 23:33:25 | 显示全部楼层
本帖最后由 hlzj88 于 2023-1-13 23:34 编辑

这个文件检测是容易的,问题是,检测到后,是否可以替换原文内容,如不允许替换,这个错误一直存在,会一直检测到,然后一直在复制文件。   还有,如果文件内容替换了,系统是不是允许用修改后的文件替换原文件,这个需要实际替换才可以知道。    还有,检测以什么样的频度来判断,一直循环,还是隔10分钟。
发表于 2023-1-14 00:01:28 | 显示全部楼层
本帖最后由 hlzj88 于 2023-1-14 00:02 编辑
  1. @echo off
  2. for /f "tokens=1-11 delims=-" %%a in ("d:\123\config_del.ini") do set /a js=%%d+5&&findstr /i "%%a" "d:\123\config_del.ini">>ss.ini || set js=%%d&&set js=!js~0,-1!&&copy /y "d:\123\config_del.ini" "d:\456"&&echo %%a----%%b----%%c----!ss!----%%e----%%f----%%g----%%h----%%i----%%j----%%k>>ss.ini
  3. move /y ss.ini "d:\123\config_del.ini"
  4. rem 为避免同一错误反复被检测到,会替换原文。上面是发现新错一直拷贝文件,前面的错误被丢失。下面是发现错误后把错误追加进错误记录
  5. for /f "tokens=1-11 delims=-" %%a in ("d:\123\config_del.ini") do set /a js=%%d+5&&findstr /i "%%a" "d:\123\config_del.ini">>ss.ini || findstr /i "%%a" "d:\123\config_del.ini">>d:\456\错误记录.txt&&set js=%%d&&set js=!js~0,-1!&&echo %%a----%%b----%%c----!ss!----%%e----%%f----%%g----%%h----%%i----%%j----%%k>>ss.ini
  6. move /y ss.ini "d:\123\config_del.ini"
  7. ping /n 10 127.1>nul
  8. goto %0
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2023-1-14 07:01:16 | 显示全部楼层
回复 3# hlzj88


    您好,是检测到有异常标志就直接复制过去,后面10分钟检测一次,发现ini文件内又出现其他的异常标志,就继续把这个ini覆盖之前复制过去的那个
发表于 2023-1-14 14:24:33 | 显示全部楼层
简洁的写法能满足不
  1. @echo off
  2. md "D:\456" 2>nul
  3. cd /d "D:\123"
  4. :start
  5. for /f "tokens=4 delims=----" %%i in (config_del.ini) do (
  6.      for /f "delims=0123456789" %%i in ("%%i") do copy "config_del.ini" "d:\456" >nul
  7. )
  8. ping /n 5 127.1>nul
  9. goto start
复制代码
 楼主| 发表于 2023-1-14 21:13:49 | 显示全部楼层
回复 5# terse


    非常感谢使用您的代码后已经可以了
 楼主| 发表于 2023-1-15 07:43:45 | 显示全部楼层
回复 5# terse


    您好,经过昨晚的测试,当D:\123\config_del.ini里面出现异常标志(无新增),会一直循环覆盖到d:\456\目录下

请问,当D:\123\config_del.ini出现异常标识且无新增异常标识时循环不再做覆盖拷贝吗?只有D:\123\config_del.ini出现首次出现异常标识和新增异常标识后再拷贝覆盖
 楼主| 发表于 2023-1-15 07:55:48 | 显示全部楼层
回复 3# hlzj88


    您好,使用了您的代码后会将d:\123\config_del.ini内的内容全部清空,然后d:\456\目录中会出现config_del.ini(有内容)和一个错误记录(无内容)
发表于 2023-1-15 11:57:10 | 显示全部楼层
本帖最后由 hfxiang 于 2023-1-15 12:23 编辑

如不介意第3方式工具gawk( http://bcn.bathome.net/tool/4.1.0/gawk.exe ),可用如下脚本实现:

  1. @echo off
  2. rem 保存为ANSI编码格式
  3. md "D:\456" 2>nul
  4. cd /d "D:\123"
  5. set/a LN=0
  6. :start
  7. for /f %%a in ('gawk -vLN^=^%LN^% "FNR>LN{if($0~/----[0-9]{8}[a-z]----/)print FNR}" config_del.ini') do (
  8.         set/a LN=%%a
  9.         copy /y "config_del.ini" "D:\456" >nul
  10. )
  11. goto start
复制代码
注意,config_del.ini 必须为编码格式

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2023-1-15 21:37:28 | 显示全部楼层
回复 7# linlianboy
试试呢
  1. @echo off
  2. md "D:\456" 2>nul
  3. cd /d "D:\123"
  4. :start
  5. for /f "tokens=4 delims=----" %%i in (config_del.ini) do (
  6.      for /f "delims=0123456789" %%i in ("%%i") do (
  7.           if not defined _%%i copy "config_del.ini" "d:\456" >nul
  8.           set _%%i=1
  9.      )
  10. )
  11. ping /n 600 127.1>nul
  12. goto start
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2023-1-17 20:56:30 | 显示全部楼层
本帖最后由 hlzj88 于 2023-1-17 20:58 编辑

回复 8# linlianboy

刚看到消息,,代码是测试过的。。可能是系统不同,需要针对系统进行微调。
因为考虑到两种情况,便于你取舍,把两种方式放在一个bat内,也许是他们运行后导致的结果。可以尝试分别用一个语句执行。
 楼主| 发表于 2023-1-18 22:29:08 | 显示全部楼层
回复 10# terse


    已成功,谢谢您
 楼主| 发表于 2023-1-18 22:29:16 | 显示全部楼层
回复 11# hlzj88


    好的,谢谢您
 楼主| 发表于 2023-1-18 22:29:28 | 显示全部楼层
回复 9# hfxiang


    可以使用,成功,谢谢您
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 06:18 , Processed in 0.023738 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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