[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 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

  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
复制代码

TOP

回复 2楼 的帖子

测试不可以用啊!

TOP

不可以用?因为你只尝试了一种可能,试下把你的文件改为a.txt
如果还不行,继续尝试其他可能。别人不可能什么都教你。
心绪平和,眼藏静谧。

TOP

回复 4楼 的帖子

我想把重复号码删除,但这个批处理可以区分出来。

TOP

顶起
高手解决!!

TOP

建议楼主发问前先搜索,养成好的习惯,下面给出解决办法:
  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 编辑 ]
***共同提高***

TOP

回复 2楼 的帖子

请问下大家哦.那个2楼的代码我试了下,那个if not defined %%i (echo%%i)
这一个我不明白...
我试着把not去掉`结果也是一样..if not defined %%i (echo %%i)和if define %%i echo %%i是等效的吗?
忆往昔笑豺狼哭叱咤天地风云际望今朝笑贫不笑娼人民不敌人民币

TOP

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

[ 本帖最后由 batman 于 2008-8-28 10:59 编辑 ]
***共同提高***

TOP

返回列表