![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-06 23:30 |
共 48,040 主题排行 / 350,125 发帖 / 今日 1 篇 / 48,252 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 求一段文件比较批处理 以10Q币答谢. |
| 可打印版本 978 / 13 |
| 第1楼 ming6747 | 发表于 2007-12-20 03:19 |
| 新手上路 发帖 2 积分 6 | |
|
求一段文件比较批处理 以10Q币答谢. 有2个TXT文件 开始2个文件内容一样
后来在一个文件里 无序插入一些字母或数字或别的符号 比如 a.txt 123456 b.txt 1123ab4c56 请把b.txt 多插入的内容找出来 存放到c.txt 比如 a.txt 123456 b.txt 1123ab4c56 c.txt 1abc 大家看下....THANK |
|
| 第2楼 jmz573515 | 发表于 2007-12-20 10:04 |
| 银牌会员 发帖 464 积分 1,212 | |
| 第3楼 everest79 | 发表于 2007-12-20 10:22 |
| 金牌会员 发帖 1,127 积分 2,564 | |
| 第4楼 scriptor | 发表于 2007-12-20 18:52 |
| 银牌会员 发帖 555 积分 1,187 | |
|
这个bat强~~ 哈哈.....
不知道lz兑现了没有!!! |
|
| 第5楼 qzwqzw | 发表于 2007-12-20 19:38 |
| 银牌会员 发帖 636 积分 2,343 | |
|
这个问题很有些深入的空间
如果 a=123456 b=123a45c456 那么结果应该是 c=ac45 还是 c=a45c 从算法上前者更简单一些 从效果上后者更实际一些 这也仅是假定了b>a的情形 如果 a=123456 b=12a45b6 那么c值应该是多少 (当然实际上这里需要设置一个用于存放a-b结果的d值) 此时指针的移动就比较复杂了 fc的机制中有一个最大失配范围的设定(假定是m) 即如果a的指针移动了m 仍然未与b匹配 则尝试移动b的指针试图与a匹配 在b移动了m仍然未匹配时 会报达到最大失配值的错误 但是这种算法在应用上仍然是有缺陷的 比如 a=123456 b=123a56456 通常比较的结果是 c=a456 d=4 但是实际上我们更希望获得的结果是 c=a56 d=空 也就是说 我们希望能在最大失配范围内找到最匹配的结果 而非最近的匹配结果 关于这一点 Ultra Comare的二进制智能比较似乎做得更好一些 我曾经使用Beyond Compare和Ultra Compare 比较新旧神雕 虽然经过很多预处理 但结果仍然不是十分理想 主要在于跨行文本结果匹配 因为文本比较是基于行的 假如 a=是的。没问题。 b=是的。<换行>没问题。 则两大软件都会将全部内容做为c、d值 而实际上我更想获得的结果是 c=<换行> 这我在将比较文本的所有换行全部替换为特殊标记后得到了改善 但仍然存在更多的问题 总的来说 简单的比较比较的简单 复杂的比较十分的复杂 [ Last edited by qzwqzw on 2007-12-20 at 07:50 PM ] |
|
| 第6楼 lxmxn | 发表于 2007-12-20 21:06 |
| 版主 发帖 4,938 积分 11,386 | |
我曾经使用Beyond Compare和Ultra Compare 比较新旧神雕 新旧神雕?视频文件还是小说? |
|
| 第7楼 qzwqzw | 发表于 2007-12-20 21:13 |
| 银牌会员 发帖 636 积分 2,343 | |
|
这还用问?
我只当没看见 白说了半天的文本比较了~ |
|
| 第8楼 qzwqzw | 发表于 2007-12-20 21:16 |
| 银牌会员 发帖 636 积分 2,343 | |
|
另外
有心人请注意 关于fc的那段最大失配指针移动算法描述得有问题 并非简单得先移b再移a |
|
| 第9楼 lxmxn | 发表于 2007-12-20 22:14 |
| 版主 发帖 4,938 积分 11,386 | |
Originally posted by qzwqzw at 2007-12-20 21:13: 呵呵,是我想歪了 |
|
| 第10楼 everest79 | 发表于 2007-12-20 23:30 |
| 金牌会员 发帖 1,127 积分 2,564 | |
|
其实这个批处理我原来用的是源与目标的字长都要取得,所以有:los标签,不过楼主声明了是后期插入,所以就不需要了,嘿嘿
|
|
| 第11楼 ming6747 | 发表于 2007-12-21 19:31 |
| 新手上路 发帖 2 积分 6 | |
|
很谢谢2楼和3楼给我的答案
希望看到的答案是批处理 而不是VBS脚本语言和高级语言编的... |
|
| 第12楼 knoppix7 | 发表于 2007-12-21 21:13 |
| 银牌会员 发帖 634 积分 1,287 来自 cmd.exe | |
|
3楼就是BAT啊...
|
|
| 第13楼 qq43142691 | 发表于 2007-12-21 21:52 |
| 中级用户 发帖 152 积分 326 | |
|
三楼的。。。好像不完成啊。。
测试 set src=123456 set dst=667 这样就出错了。。不知为啥。。。 |
|
| 第14楼 everest79 | 发表于 2007-12-22 10:41 |
| 金牌会员 发帖 1,127 积分 2,564 | |
Originally posted by ming6747 at 2007-12-21 07:31 PM: 嘿嘿,各位,看到好加点分哇,Q币就免了 [ Last edited by everest79 on 2007-12-22 at 10:45 AM ] |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |