![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-09 16:01 |
共 47,811 主题排行 / 349,896 发帖 / 今日 1 篇 / 48,254 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 实时获取txt文件的内容值达条件则执行批处理? |
| 可打印版本 1,057 / 12 |
| 第1楼 qwertl | 发表于 2008-09-02 20:33 |
| 中级用户 发帖 243 积分 461 | |
|
实时获取txt文件的内容值达条件则执行批处理? 实时获取txt文件的内容值后计算符合条件则执行另一批处理程序?请指教.
存放目录:d:\record txt 文件名:Ter2008Y4M16D12h.txt Ter2008Y4M16D13h.txt Ter2008Y4M16D14h.txt Ter2008Y4M16D15h.txt : : 每一小时就会生成一个这样的文件. txt的格式为: ( 记录每秒钟生成一行,时间间隔可以指定,如3分钟生成一行记录, 每次要取最后一笔记录最后一列的值.) 682 2008-4-16 15:00:00 26.75 683 2008-4-16 15:00:01 26.75 684 2008-4-16 15:00:02 26.75 685 2008-4-16 15:00:03 27.25 686 2008-4-16 15:00:04 27.25 687 2008-4-16 15:00:05 27 688 2008-4-16 15:00:06 27 689 2008-4-16 15:00:07 27.25 690 2008-4-16 15:00:08 26.75 691 2008-4-16 15:00:09 27.5 692 2008-4-16 15:00:10 27.5 693 2008-4-16 15:00:12 26.75 694 2008-4-16 15:00:13 27.5 695 2008-4-16 15:00:14 27.25 696 2008-4-16 15:00:15 27 697 2008-4-16 15:00:16 27 698 2008-4-16 15:00:17 27.25 699 2008-4-16 15:00:18 27.25 700 2008-4-16 15:00:19 27.5 701 2008-4-16 15:00:20 27.25 702 2008-4-16 15:00:21 27.25 703 2008-4-16 15:00:22 27.25 现要求能否通过程序实时监控(或隔3分钟)取最新生成的txt文件最后一列的值,,如果取值大于30就自动去执行另一个批处理程序;每天自动将d:\record 目录下前一天的生成的所有txt压缩到另一目录存放以前一日期命名的压缩包文件.如: d:\rardata\%date%-1.rar [ Last edited by qwertl on 2008-9-2 at 08:54 PM ] |
|
| 第2楼 HAT | 发表于 2008-09-02 20:58 |
| 版主 发帖 5,017 积分 9,023 | |
| 第3楼 qwertl | 发表于 2008-09-02 21:03 |
| 中级用户 发帖 243 积分 461 | |
|
谢谢HAT.用goto就搞定,神了.
![]() 还有每天自动将d:\record 目录下前一天的生成的所有txt压缩到另一目录存放以前一日期命名的压缩包文件.如: d:\rardata\%date%-1.rar 要怎样来做呢? [ Last edited by qwertl on 2008-9-2 at 09:19 PM ] |
|
| 第4楼 HAT | 发表于 2008-09-02 21:47 |
| 版主 发帖 5,017 积分 9,023 | |
| 第5楼 qwertl | 发表于 2008-09-02 21:59 |
| 中级用户 发帖 243 积分 461 | |
|
这样是可行,但是txt 文件名:Ter2008Y4M16D12h.txt
Ter2008Y4M16D13h.txt Ter2008Y4M16D14h.txt Ter2008Y4M16D15h.txt : 每一小时就会生成一个这样的文件. txt每秒钟就有一行记录的话也比较占CPU及内存资源?能否每当一新txt文件生成时自动将前面的文件明间生成的txt移动到另一目录呢?这样应该就不会再重复去处理很多过时的值. 压缩的问题己经看上一贴会了,不过很多命令还要学习才看懂.真是感谢啦! [ Last edited by qwertl on 2008-9-2 at 10:04 PM ] |
|
| 第6楼 HAT | 发表于 2008-09-02 22:12 |
| 版主 发帖 5,017 积分 9,023 | |
|
这些文本文件是由批处理产生的吗?是的话,在那个批处理里面加个move就行了吧。
|
|
| 第7楼 qwertl | 发表于 2008-09-02 22:18 |
| 中级用户 发帖 243 积分 461 | |
|
文本文件不是由批处理生成的,是由一个rs232设备固定格式生成的数据,所以控制不到,但每个文件的记录数是可以设置时间间隔略长些,
for /f "tokens=*" %%a in ('dir /s /b /a-d /o-d"%SrcDir%"') do ( 这里是否可以指定只取第一行的txt传给%%a呢?可以的话处理最新生成的txt文件即可. 不能指定只取第一行的话能否将除第一行的TXT文件保留,其它的TXT全移动到另一目录去.然后再执行二楼的代码. [ Last edited by qwertl on 2008-9-2 at 10:41 PM ] |
|
| 第8楼 HAT | 发表于 2008-09-02 22:55 |
| 版主 发帖 5,017 积分 9,023 | |
|
由于goto语句的存在,后面的应该只处理第一行的txt吧,也就是说只处理最新生成的txt文件
|
|
| 第9楼 HAT | 发表于 2008-09-02 23:01 |
| 版主 发帖 5,017 积分 9,023 | |
|
这样会不会清楚一点:
|
|
| 第10楼 qwertl | 发表于 2008-09-02 23:07 |
| 中级用户 发帖 243 积分 461 | |
|
C:\>set SrcDir=C:\test
C:\>dir /b /a-d /o-d "C:\test\*.txt TEMPer2008Y3M30D9h.txt TEMPer2008Y4M16D15h.txt TEMPer2008Y3M28D15h.txt 运行9楼代码,循环出现系统找不到文件 TEMPer2008Y3M30D9h.txt。 c:\test\TEMPer2008Y3M30D9h.txt文件记录: 1 2008-3-30 9:19:25 0 2 2008-3-30 9:19:26 0 3 2008-3-30 9:19:27 0 4 2008-3-30 9:19:28 0 5 2008-3-30 9:19:29 0 6 2008-3-30 9:19:30 31 7 2008-3-30 9:22:32 -13.25 8 2008-3-30 9:22:32 -13.25 ____________________________________________________________ C:\>usbt C:\>set SrcDir=C:\test C:\>for /F "tokens=*" %a in ('dir /b /a-d /o-d "C:\test\*.txt"') do ( set NewFile=%a goto :next ) C:\>( set NewFile=TEMPer2008Y3M30D9h.txt goto :next ) C:\>for /F "usebackq tokens=4 delims=. " %b in ("TEMPer2008Y3M30D9h.txt") do (if %b GTR 30 ( echo start c:\12.bat ping -n 10 127.1 1>nul goto :begin ) ) 系统找不到文件 TEMPer2008Y3M30D9h.txt。 C:\>ping -n 10 127.1 1>nul C:\>goto :begin C:\>for /F "tokens=*" %a in ('dir /b /a-d /o-d "C:\test\*.txt"') do ( set NewFile=%a goto :next ) C:\>( set NewFile=TEMPer2008Y3M30D9h.txt goto :next ) C:\>for /F "usebackq tokens=4 delims=. " %b in ("TEMPer2008Y3M30D9h.txt") do (if %b GTR 30 ( echo start c:\12.bat ping -n 10 127.1 1>nul goto :begin ) ) 系统找不到文件 TEMPer2008Y3M30D9h.txt。 C:\>ping -n 10 127.1 1>nul ^C终止批处理操作吗(Y/N)? [ Last edited by qwertl on 2008-9-2 at 11:46 PM ] |
|
| 第11楼 HAT | 发表于 2008-09-02 23:53 |
| 版主 发帖 5,017 积分 9,023 | |
|
第二个for里面应该用绝对路径
|
|
| 第12楼 qwertl | 发表于 2008-09-03 00:29 |
| 中级用户 发帖 243 积分 461 | |
|
可以了,太棒了.
|
|
| 第13楼 keguanglidos | 发表于 2008-09-03 04:37 |
| 新手上路 发帖 9 积分 18 | |
|
批处理也可以这样啊,学习了,谢谢了
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |