中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-06 04:59
48,039 主题排行 / 350,124 发帖 / 今日 2 篇 / 48,251 会员排行
DOS批处理 & 脚本技术(批处理室) » [英雄求助帖]判断插入数字序列问题
可打印版本  1,671 / 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:
还有一个办法,就是在你第一次运行的时候,先手动把下一个序号写到1.txt的最下面
以后每次就可以自动把下一个序号提前写在1.txt的最后 ...

老哥,可能我没表述清楚,就是自动加序列号到文本里,并判断文本里已经有的序列号然后递增!您看看我写的那个好吗?帮我看看能怎么实现不要临时文件
第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