![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-06 07:13 |
共 48,039 主题排行 / 350,124 发帖 / 今日 2 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [英雄求助帖]判断插入数字序列问题 |
| 可打印版本 1,681 / 16 |
| 第1楼 hbby | 发表于 2007-10-21 16:23 |
| 中级用户 发帖 99 积分 220 | |
|
[英雄求助帖]判断插入数字序列问题 我有一包含数字的日志文件A.LOG,想通过批处理实现在产生的日志上增加数字序列
比如日志内容如下: 9/9 11:20:00.234 7cc Srv: StarWind Alcohol Edition iSCSI Target v3.2.3 (Build 20070527, Win32, Alcohol Edition) 9/9 11:20:00.234 7cc Srv: Built May 29 2007 00:57:30 9/9 11:20:00.234 7cc Srv: System CPU count: 1 9/9 11:20:00.234 7cc Srv: Unlimited number of client hosts allowed. 9/9 11:20:00.296 7cc Srv: Special build (plugins are disabled). 9/9 11:20:00.328 7cc Srv: Config file: 'StarWindLite.cfg' 9/9 11:20:01.718 7cc conf: 'LogLevel' = '1' 9/9 11:20:01.718 7cc conf: 'LogMask' = '0x8fffffff' 9/9 11:20:01.718 7cc conf: 'Port' = '3260' 9/9 11:20:01.718 7cc conf: 'Interface' = '0.0.0.0' 9/9 11:20:01.718 7cc conf: 'Login' = 'test' 9/9 11:20:01.718 7cc conf: 'Password' = '##CY9rzUYh03PK3k6DJie09g==' 9/9 11:20:01.718 7cc conf: 'MinBufferSize' = '65536' 9/9 11:20:01.718 7cc conf: 'AlignmentMask' = '0x0000' 9/9 11:20:01.718 7cc conf: 'MaxPendingRequests' = '64' 9/9 11:20:01.718 7cc conf: 'DefTargetName' = 'iqn.2003-06.com.rocketdivision.swl:$(host).$(symid)' 9/9 11:20:01.718 7cc conf: 'AllowOnlyRecordableCd' = 'no' 9/9 11:20:01.718 7cc conf: Variable 'LogLevel' is set to '1'. 9/9 11:20:01.718 7cc conf: Variable 'LogMask' is set to '0x8fffffff'. 9/9 11:20:01.718 7cc conf: Variable 'Port' is set to '3260'. 9/9 11:20:01.718 7cc conf: Variable 'Interface' is set to '0.0.0.0'. 9/9 11:20:01.718 7cc conf: Variable 'Login' is set to 'test'. 9/9 11:20:01.718 7cc conf: Variable 'Password' is set 通过批处理实现每增加一个日志前运行批处理可自己在日志上加序号,达到以下效果: 01 9/9 11:20:00.234 7cc Srv: StarWind Alcohol Edition iSCSI Target v3.2.3 (Build 20070527, Win32, Alcohol Edition) 9/9 11:20:00.234 7cc Srv: Built May 29 2007 00:57:30 9/9 11:20:00.234 7cc Srv: System CPU count: 1 9/9 11:20:00.234 7cc Srv: Unlimited number of client hosts allowed. 02 9/9 11:20:00.296 7cc Srv: Special build (plugins are disabled). 9/9 11:20:00.328 7cc Srv: Config file: 'StarWindLite.cfg' 9/9 11:20:01.718 7cc conf: 'LogLevel' = '1' 9/9 11:20:01.718 7cc conf: 'LogMask' = '0x8fffffff' 9/9 11:20:01.718 7cc conf: 'Port' = '3260' 9/9 11:20:01.718 7cc conf: 'Interface' = '0.0.0.0' 03 9/9 11:20:01.718 7cc conf: 'Login' = 'test' 9/9 11:20:01.718 7cc conf: 'Password' = '##CY9rzUYh03PK3k6DJie09g==' 9/9 11:20:01.718 7cc conf: 'MinBufferSize' = '65536' 9/9 11:20:01.718 7cc conf: 'AlignmentMask' = '0x0000' 9/9 11:20:01.718 7cc conf: 'MaxPendingRequests' = '64' 04 9/9 11:20:01.718 7cc conf: 'DefTargetName' = 'iqn.2003-06.com.rocketdivision.swl:$(host).$(symid)' 9/9 11:20:01.718 7cc conf: 'AllowOnlyRecordableCd' = 'no' 9/9 11:20:01.718 7cc conf: Variable 'LogLevel' is set to '1'. 9/9 11:20:01.718 7cc conf: Variable 'LogMask' is set to '0x8fffffff'. 05 9/9 11:20:01.718 7cc conf: Variable 'Port' is set to '3260'. 9/9 11:20:01.718 7cc conf: Variable 'Interface' is set to '0.0.0.0'. 9/9 11:20:01.718 7cc conf: Variable 'Login' is set to 'test'. 9/9 11:20:01.718 7cc conf: Variable 'Password' is set 以后自己每增加一次日志,通过批处理判断在文件中前面的序列号再追加新的序号!谢谢各位! |
|
| 第2楼 hbby | 发表于 2007-10-21 19:27 |
| 中级用户 发帖 99 积分 220 | |
|
英雄高手请出招,周末已经结束了!谢谢各位!
|
|
| 第3楼 26933062 | 发表于 2007-10-21 19:29 |
| 银牌会员 发帖 879 积分 2,268 | |
|
主要是没太看懂你的工作流程.
|
|
| 第4楼 hbby | 发表于 2007-10-21 19:39 |
| 中级用户 发帖 99 积分 220 | |
Originally posted by 26933062 at 2007-10-21 19:29: 又是老哥你看到了呀? 就是大比方我有个批处理如下: @echo off 生成序列数程序>>1.txt dir>>1.txt 以后执行这个批处理就可以追加序列好,1.txt效果如下 01 2007-03-23 下午 05:19 1,024 .rnd 2006-11-07 上午 01:15 <DIR> Documents and Settings 2006-11-07 上午 01:33 <DIR> Program Files 2006-11-07 上午 01:06 <DIR> WINDOWS 02 2007-03-23 下午 05:19 1,024 .rnd 2006-11-07 上午 01:15 <DIR> Documents and Settings 2006-11-07 上午 01:33 <DIR> Program Files 2006-11-07 上午 01:06 <DIR> WINDOWS |
|
| 第5楼 hbby | 发表于 2007-10-21 19:45 |
| 中级用户 发帖 99 积分 220 | |
|
说通俗点就是写个序列号生成器,可以自动判断文本中前面已经有的序列号,然后再追加连续序列号到文本里面,希望老哥能帮忙!谢谢!
|
|
| 第6楼 26933062 | 发表于 2007-10-21 19:49 |
| 银牌会员 发帖 879 积分 2,268 | |
|
问题是你每次生成序列号后又如何?
你的1.txt里的内容是从哪里来的? 每次都是在1.txt生成序列号,然后再把a.log的内容copy过来吗?我想不是吧? 你这个批处理的功能还是没说清楚啊 |
|
| 第7楼 hbby | 发表于 2007-10-21 19:53 |
| 中级用户 发帖 99 积分 220 | |
|
每次都是在1.txt生成序列号,然后再把a.log的内容copy过来,就是这个意思!呵呵,我的表诉能力太差了!有劳老哥!
|
|
| 第8楼 hbby | 发表于 2007-10-21 21:30 |
| 中级用户 发帖 99 积分 220 | |
|
我有个思路,那位大哥帮改改!?
@echo off setlocal enabledelayedexpansion set/a n=1 :redo type 1.txt|find "第!n!个方案" (set/a n+=1 && goto redo) echo 第%n%个方案>>1.txt endlocal |
|
| 第9楼 hbby | 发表于 2007-10-21 22:05 |
| 中级用户 发帖 99 积分 220 | |
|
就是达到以下效果
@echo off if not exist %date% md %date% setlocal enabledelayedexpansion set/a n=1 :redo if exist %date%\!n! (set/a n+=1 && goto redo) cd.>%date%\%n% echo 第%n%个方案>>%date%方案.txt endlocal type a.log>>%date%方案.txt 以上虽然勉强实现功能,但是由于会生成临时文件,还有如果删除临时文件此程序又重头计数,很不方便,请高手支招!谢谢! |
|
| 第10楼 lxmxn | 发表于 2007-10-21 22:47 |
| 版主 发帖 4,938 积分 11,386 | |
|
临时文件是个方法,还可以在注册表里面新建一个值,每次来读这个注册表值也行。
|
|
| 第11楼 26933062 | 发表于 2007-10-22 01:16 |
| 银牌会员 发帖 879 积分 2,268 | |
|
看你的1.txt文件有个特点:
就是只有序号这一行是单独一行的. 也就是说,除了序号的行以外,其它的行,都是"内容+空格+内容", 唯独有序号的行是"内容"后面没有空格+内容. 不知道这么说你看的明白不? |
|
| 第12楼 26933062 | 发表于 2007-10-22 01:31 |
| 银牌会员 发帖 879 积分 2,268 | |
|
还有一个办法,就是在你第一次运行的时候,先手动把下一个序号写到1.txt的最下面
以后每次就可以自动把下一个序号提前写在1.txt的最后. 我认为这个比上一个好,不容易出错些 如上1.txt内容就变成 01 2007-03-23 下午 05:19 1,024 .rnd 2006-11-07 上午 01:15 <DIR> Documents and Settings 2006-11-07 上午 01:33 <DIR> Program Files 2006-11-07 上午 01:06 <DIR> WINDOWS 02 2007-03-23 下午 05:19 1,024 .rnd 2006-11-07 上午 01:15 <DIR> Documents and Settings 2006-11-07 上午 01:33 <DIR> Program Files 2006-11-07 上午 01:06 <DIR> WINDOWS 03 [ Last edited by 26933062 on 2007-10-22 at 04:57 PM ] |
|
| 第13楼 hbby | 发表于 2007-10-22 22:22 |
| 中级用户 发帖 99 积分 220 | |
Originally posted by 26933062 at 2007-10-22 01:31: 老哥,可能我没表述清楚,就是自动加序列号到文本里,并判断文本里已经有的序列号然后递增!您看看我写的那个好吗?帮我看看能怎么实现不要临时文件 |
|
| 第14楼 hbby | 发表于 2007-10-22 22:27 |
| 中级用户 发帖 99 积分 220 | |
Originally posted by lxmxn at 2007-10-21 22:47: 请求版主也出手襄助!不胜感激! |
|
| 第15楼 26933062 | 发表于 2007-10-22 22:37 |
| 银牌会员 发帖 879 积分 2,268 | |
|
晕死
12 楼的不是么? 你不会没有测试吧? |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |