中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-09 16:41
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请问如何用批处理删掉所有重复行! 查看 2,260 回复 23
16 发表于 2007-04-21 07:37 ·  中国 安徽 芜湖 电信
高级用户
★★
积分 537
发帖 219
注册 2006-10-31 21:08
19年会员
UID 69036
性别 男
来自 芜湖
状态 离线
for /f "delims=" %%i in (test.txt) do if not defined %%i set %%i=a&echo %%i
江湖远
碧空长
路茫茫

一个人漫无目的的奔跑,风,刺骨的冷....
17 发表于 2007-04-21 10:05 ·  中国 广东 广州 天河区 电信
金牌会员
★★★★
一叶枝头,万树皆春
积分 2,564
发帖 1,127
注册 2006-12-25 22:57
19年会员
UID 74552
性别 男
状态 离线
ls的也很好呀
18 发表于 2007-04-21 10:52 ·  中国 北京 宽捷网通信技术有限公司
初级用户
积分 84
发帖 28
注册 2006-05-03 22:36
20年会员
UID 54894
性别 男
状态 离线
uniq text.txt
19 发表于 2007-09-26 14:20 ·  中国 湖北 武汉 中国科学院武汉分院
银牌会员
★★★
积分 1,187
发帖 555
注册 2006-12-21 07:35
19年会员
UID 74129
性别 男
状态 离线
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
我就要的是这个啊
赞一个....
20 发表于 2007-09-26 22:22 ·  中国 广东 东莞 电信
银牌会员
★★★
积分 1,284
发帖 538
注册 2002-11-02 00:00
23年会员
UID 129
性别 男
状态 离线
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>
21 发表于 2007-09-26 23:26 ·  中国 北京 网联光通
初级用户
★★
积分 128
发帖 59
注册 2007-09-15 23:03
18年会员
UID 97496
性别 男
状态 离线
:)

@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 ]
22 发表于 2007-09-26 23:52 ·  中国 江苏 常州 武进区 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
20年会员
UID 42345
状态 离线
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
23 发表于 2008-08-28 17:42 ·  中国 上海 闵行区 电信
新手上路
积分 14
发帖 7
注册 2008-08-25 10:53
17年会员
UID 124098
性别 男
状态 离线
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 有什么用处?
24 发表于 2008-08-28 18:05 ·  中国 上海 闵行区 电信
新手上路
积分 14
发帖 7
注册 2008-08-25 10:53
17年会员
UID 124098
性别 男
状态 离线
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
论坛跳转: