中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请问如何用批处理删掉所有重复行!
« [1] [2] »
作者:
标题: 请问如何用批处理删掉所有重复行! 上一主题 | 下一主题
huzixuan
高级用户




积分 537
发帖 219
注册 2006-10-31
来自 芜湖
状态 离线
『第 16 楼』:  

for /f "delims=" %%i in (test.txt) do if not defined %%i set %%i=a&echo %%i



江湖远
碧空长
路茫茫

    一个人漫无目的的奔跑,风,刺骨的冷....
2007-4-21 07:37
查看资料  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 17 楼』:  

ls的也很好呀

2007-4-21 10:05
查看资料  发短消息 网志   编辑帖子  回复  引用回复
waynebeat
初级用户




积分 84
发帖 28
注册 2006-5-3
状态 离线
『第 18 楼』:  

uniq text.txt

2007-4-21 10:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
scriptor
银牌会员




积分 1187
发帖 555
注册 2006-12-21
状态 离线
『第 19 楼』:  



  Quote:
Originally posted by everest79 at 2007-4-21 04:41:
我的这个只能将重复的行删掉

a
a
b
c
d

a
b
c
d
并不能
a
a
b
c
d

b
c
d
src.txt是你原来的文本,执行完后dst.txt是过滤后的文本,将cmd切换到保存src.txt的目录下,再执行上边一行

哈哈....终于找到le
我就要的是这个啊
赞一个....

2007-9-26 14:20
查看资料  发短消息 网志   编辑帖子  回复  引用回复
chishingchan
银牌会员




积分 1282
发帖 538
注册 2002-11-2
状态 离线
『第 20 楼』:  

16楼的代码不行
D:\DOCUME~1\ADMINI~1>for /f "delims=" %i in (test.txt) do if not defined %i set
%i=a&echo %i

D:\DOCUME~1\ADMINI~1>if not defined aa set aa=a  & echo aa

D:\DOCUME~1\ADMINI~1>if not defined bb set bb=a  & echo bb

D:\DOCUME~1\ADMINI~1>if not defined cc set cc=a  & echo cc

D:\DOCUME~1\ADMINI~1>if not defined dd set dd=a  & echo dd

D:\DOCUME~1\ADMINI~1>if not defined bb set bb=a  & echo bb

D:\DOCUME~1\ADMINI~1>if not defined cc set cc=a  & echo cc

D:\DOCUME~1\ADMINI~1>if not defined ee set ee=a  & echo ee

D:\DOCUME~1\ADMINI~1>

2007-9-26 22:22
查看资料  发短消息 网志   编辑帖子  回复  引用回复
yoyodos
初级用户




积分 128
发帖 59
注册 2007-9-15
状态 离线
『第 21 楼』:  

:)
@echo off
setlocal enabledelayedexpansion
cd.>temp.txt
for /f "tokens=* delims=:" %%i in ('findstr /n ".*" test.txt') do (
    echo %%i>>temp.txt
)

for /f "tokens=1* delims=:" %%m in (temp.txt) do (
    for /f "tokens=1* delims=:" %%x in ('findstr /v /c:"%%m:" temp.txt') do (
        if "%%n"=="%%y" (
            set str=%%y !str!
        )
    )
)

findstr /v "!str!" test.txt
pause
[ Last edited by yoyodos on 2007-9-26 at 11:28 PM ]

2007-9-26 23:26
查看资料  发送邮件  发短消息 网志  OICQ (52721292)  编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 22 楼』:  



  Quote:
Originally posted by chishingchan at 2007-9-26 22:22:
16楼的代码不行
D:\DOCUME~1\ADMINI~1>for /f "delims=" %i in (test.txt) do if not defined %i set
%i=a&echo %i

D:\DOCUME~1\ADMINI~1>if not defined aa set aa=a  & ech ...

16楼的应该可以!
@echo off
for /f "delims=" %%i in (test.txt) do if not defined %%i set %%i=a&echo %%i>>test2.txt
pause

2007-9-26 23:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bray
新手上路





积分 14
发帖 7
注册 2008-8-25
状态 离线
『第 23 楼』:  



  Quote:
Originally posted by huzixuan at 2007-4-21 07:37 AM:
for /f "delims=" %%i in (test.txt) do if not defined %%i set %%i=a&echo %%i

set %%i=a  有什么用处?

2008-8-28 17:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bray
新手上路





积分 14
发帖 7
注册 2008-8-25
状态 离线
『第 24 楼』:  



  Quote:
Originally posted by bray at 2008-8-28 05:42 PM:


set %%i=a  有什么用处?

还有 如果只是想删除相邻重复行的内容怎么办
比如
aaa
aaa
bbb
aaa
aaa
aaa
ccc
ddd
ccc

要求处理后为:
aaa
bbb
aaa
ccc
ddd
ccc

2008-8-28 18:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: