找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 31778|回复: 8

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

[复制链接]
发表于 2008-8-6 08:37:15 | 显示全部楼层 |阅读模式
本帖最后由 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
发表于 2008-8-6 11:00:54 | 显示全部楼层

  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
复制代码
 楼主| 发表于 2008-8-23 00:17:43 | 显示全部楼层

回复 2楼 的帖子

测试不可以用啊!
发表于 2008-8-23 00:24:21 | 显示全部楼层
不可以用?因为你只尝试了一种可能,试下把你的文件改为a.txt
如果还不行,继续尝试其他可能。别人不可能什么都教你。
 楼主| 发表于 2008-8-28 00:03:06 | 显示全部楼层

回复 4楼 的帖子

我想把重复号码删除,但这个批处理可以区分出来。
发表于 2008-8-28 00:36:53 | 显示全部楼层
顶起
高手解决!!
发表于 2008-8-28 08:35:32 | 显示全部楼层
建议楼主发问前先搜索,养成好的习惯,下面给出解决办法:
  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 编辑 ]
发表于 2008-8-28 10:39:35 | 显示全部楼层

回复 2楼 的帖子

请问下大家哦.那个2楼的代码我试了下,那个if not defined %%i (echo%%i)
这一个我不明白...
我试着把not去掉`结果也是一样..if not defined %%i (echo %%i)和if define %%i echo %%i是等效的吗?
发表于 2008-8-28 10:58:38 | 显示全部楼层
我来说明下吧:
  if not defined %%i echo %%i的意思是如果不存在以%%i值为名的变量则显示%%i的
值,然后接下来的set "%%i=脚本之家"就命名以%%i值为名的变量将其值设为脚本之家,
这样当再遇到值相同的%%i后就会跳过,从而达到筛选相同值的目的,只是二楼没在重定
向输出,所以只能将不重复的数字显示出来而没有达到更改文本的目的。

[ 本帖最后由 batman 于 2008-8-28 10:59 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 17:18 , Processed in 0.015313 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表