Board logo

标题: [文本处理] 批处理如何删除文本里的多余重复行(重复的只保留一行) [打印本页]

作者: pengyou86    时间: 2008-8-6 08:37     标题: 批处理如何删除文本里的多余重复行(重复的只保留一行)

本帖最后由 pcl_test 于 2016-11-9 21:43 编辑

一个txt文本里面有多行数字组合。但有重号的,怎样才能把重号删除或者区分出来.谢谢!大家给个思路或者批处理也行的

123000
234000
123000
341371
385379
363075
327522
334654
351271
384798
308713
333604
321328
359724

256111
256111
341371
385379
363075
327522
334654
351271
384798
308713
333604
321328
359724

作者: huahua0919    时间: 2008-8-6 11:00

  1. @echo off
  2. for /f "delims=" %%i in (a.txt) do (
  3. if not defined  %%i (echo %%i)
  4. set "%%i=脚本之家"
  5. )
  6. pause
复制代码

作者: pengyou86    时间: 2008-8-23 00:17     标题: 回复 2楼 的帖子

测试不可以用啊!
作者: pusofalse    时间: 2008-8-23 00:24

不可以用?因为你只尝试了一种可能,试下把你的文件改为a.txt
如果还不行,继续尝试其他可能。别人不可能什么都教你。
作者: pengyou86    时间: 2008-8-28 00:03     标题: 回复 4楼 的帖子

我想把重复号码删除,但这个批处理可以区分出来。
作者: jellyhk    时间: 2008-8-28 00:36

顶起
高手解决!!
作者: batman    时间: 2008-8-28 08:35

建议楼主发问前先搜索,养成好的习惯,下面给出解决办法:
  1. @echo off
  2. for /f %%i in ('type a.txt') do (
  3.      if not defined flag (
  4.         echo %%i>a.txt
  5.         set "_%%i=a"&set "flag=a"
  6.         ) else (
  7.        if not defined _%%i echo %%i>>a.txt&set "_%%i=a"
  8.     )
  9. )
  10. start a.txt  
复制代码

[ 本帖最后由 batman 于 2008-8-28 09:08 编辑 ]
作者: start    时间: 2008-8-28 10:39     标题: 回复 2楼 的帖子

请问下大家哦.那个2楼的代码我试了下,那个if not defined %%i (echo%%i)
这一个我不明白...
我试着把not去掉`结果也是一样..if not defined %%i (echo %%i)和if define %%i echo %%i是等效的吗?
作者: batman    时间: 2008-8-28 10:58

我来说明下吧:
  if not defined %%i echo %%i的意思是如果不存在以%%i值为名的变量则显示%%i的
值,然后接下来的set "%%i=脚本之家"就命名以%%i值为名的变量将其值设为脚本之家,
这样当再遇到值相同的%%i后就会跳过,从而达到筛选相同值的目的,只是二楼没在重定
向输出,所以只能将不重复的数字显示出来而没有达到更改文本的目的。

[ 本帖最后由 batman 于 2008-8-28 10:59 编辑 ]




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2