巧妙的利用批处理"md"+"dir"删除文本重复行

昨天朋友让我帮忙看一个txt文本,看看怎么将此文本中的重复行去掉.其内容大致如下:
1=c:\program files\abc\abc.exe
2=c:\%windir%\abc.exe
……
……
4999=d:\def\123.exe
……

  此文本中有些行是重复的,但不限于挨着的两行或几行.由于数量较大,已经到了几千行,所以朋友不知道如何处理比较好.他告诉我说他自己写了一段程序来处理这个文本,结果在机器上运行了四个多小时还没有处理完,我问他怎么处理的,他说先将第一行作为查找目标,在它后面逐行查找,找到就将其删除,然后第二行、第三行直到结束……,不用多想,这样肯定有大量的冗余计算,所以4个小时就不足为奇了.
  到底怎么处理重复的行最快呢?难道真的要为一个文本专门去写一个程序来处理吗?当我拿到之后突然一个念头就在脑中闪现了,批处理!呵呵,朋友说:知道你批处理厉害嘛,其实不然,并非我批处理厉害,而是想到的方法比他快,哈哈,我的处理方法只需要几分钟即可搞定,当我结果出来的时候我告诉他我只用了"md"和"dir"命令时他怎么都不信.
  一起来看看我是怎么处理的.我的大致思路就是一句话:现将文本中的每一行字符包括路径处理一下(即替换掉不能作为文件夹名称的字符,例如"\",空格等),然后用md将这些每一行字符串批量建立文件夹,有重复的部分的话自动就会被新的同名文件夹覆盖掉,然后再用dir命令取所有文件夹的名称,导入到txt文本中,再将特殊字符替换回来即可.
  大致步骤是:
1.将文本内容复制到word中,为什么要复制到word里,因为首先word中可以替换回车符,另外,对于大量的字符替换word处理的速度要比记事本快n倍都不止!

2.将特殊字符替换成另外的合法文件名字符,例如":\"可以替换成"@","\"可以替换成"#"等.

3.替换掉所有的行首的数字,替换技巧提示:要加上上一行的回车符来替换,而且替换成回车符加上空.

4.剩下的就是完全合法的一行行文件夹名称了.

5.再用word在每一行前加上"md ",注意:md后面有个空格.

6.将word内容全选复制到记事本中,将记事本保存为bat文件,例如:"md.bat"

7.将md.bat复制到一个新建的文件夹中,然后双击运行.

8.此时md.bat批处理就会欢快的开始运行,大概半分钟后就会运行完毕,然后该新建目录中就会产生大量的空文件夹,而且名称就是文本中的每一行字符串.这样重复的行也就自动消失了:)

9.再用dir命令将所有文件夹名称收集起来记录到一个文本中,所以,我们继续.

10.在此目录中再新建一个记事本文件txt,然后在里面输入一行代码"dir/a/b/o:n>ok.txt",然后保存为"dir.bat"文件.

11.然后双击运行dir.bat,大概半秒钟该批处理就运行完毕了.完毕之后就会在该目录生成一个ok.txt的文本文件,打开该文件看看?呵呵,所有的文件夹名称就全部收集到一起了.

12.将ok.txt文件中的内容全选复制到word中,再将第2步中我们替换过的字符再替换回来,就将文本还原了.

13.替换完之后,我们就基本完成了任务了,最后只需要再想办法(同样可以用批处理)将每一行前面加上一个序号即可.

  至此,我们搞定!:)整个过程不超过10分钟:)



[本日志由 黑咖啡 于 2009-03-17 03:08 AM 编辑]
上一篇: 沉重的夜晚
下一篇: 周末
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: 巧妙 利用 批处理 md dir 删除 文本 重复
相关日志:
评论: 4 | 引用: 0 | 查看次数: -
迷茫的羔羊
回复回复迷茫的羔羊[2014-04-19 22:57:03 | | | del | 取消审核]
[ 正在加载评论信息,请稍候... ]
k
回复回复k[2010-02-13 19:01:28 | | | del | 取消审核]
[ 正在加载评论信息,请稍候... ]
午夜客
回复回复午夜客[2008-12-02 23:28:04 | | | del | 取消审核]
[ 正在加载评论信息,请稍候... ]
UMU
回复回复UMU[2008-11-14 10:10:59 | | | del | 取消审核]
[ 正在加载评论信息,请稍候... ]
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 支持Gravatar头像.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.