中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-10 06:55
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]去掉文本文档中相同的行 查看 1,046 回复 6
楼 主 [已结]去掉文本文档中相同的行 发表于 2008-07-22 17:24 ·  中国 四川 成都 电信
高级用户
★★★
据说是李先生
积分 609
发帖 400
注册 2008-04-23 15:55
18年会员
UID 116706
性别 男
状态 离线
文本文档 a.txt 里面有些行是完全相同的,
我想编个批处理把那些多余的相同的去掉,
使得弄完以后所有的都不相同.

怎么办啊, 我试了下没办法, 象下面这样的:

for /f %%i in (a.txt) do echo %%i>>new.txt&set str=%%i&for /f %%j in (a.txt) do if %%j==%str% set %%j=nul

[ Last edited by HAT on 2008-10-30 at 23:23 ]
2 发表于 2008-07-23 16:05 ·  中国 广东 汕头 电信
初级用户
积分 32
发帖 14
注册 2007-08-28 16:42
18年会员
UID 96038
性别 男
状态 离线
@echo off
if exist new.txt del new.txt
sort/r<a.txt>temp.txt
setlocal enabledelayedexpansion
set cat=
set dog=
set/a cnt=-1
for /f %%i in (temp.txt) do (
set cat=!dog!
set dog=%%i
set/a cnt+=1
if not "!cat!" equ "" if !dog! neq !cat! (echo !cat! >>new.txt&set/a cnt=0)
)
if !dog! neq !cat! (echo !dog! >>new.txt) else (
echo !cat! >>new.txt)
if exist temp.txt del temp.txt
3 发表于 2008-09-05 13:00 ·  中国 北京 鹏博士BGP
高级用户
★★★
据说是李先生
积分 609
发帖 400
注册 2008-04-23 15:55
18年会员
UID 116706
性别 男
状态 离线
Originally posted by fuuma at 2008-7-23 04:05 PM:
@echo off
if exist new.txt del new.txt
sort/r<a.txt>temp.txt
setlocal enabledelayedexpansion
set cat=
set dog=
set/a cnt=-1
for /f %%i in (temp.txt) do (
set cat=!dog!
set dog=%%i
s ...



谢了啊 ,哈哈
4 发表于 2008-09-07 16:26 ·  中国 北京 鹏博士BGP
初级用户
积分 37
发帖 32
注册 2008-08-21 15:50
17年会员
UID 123784
性别 男
状态 离线
太复杂啊,可以考虑find命令。
5 Re 4楼 发表于 2008-09-07 18:08 ·  中国 重庆 九龙坡区 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
是这个意思吗?
@echo off
type nul>b.txt
for /f "delims=" %%a in (a.txt) do (
findstr /x /c:"%%a" b.txt 2>nul||echo %%a>>b.txt
)
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
qinchun36 +2 2008-10-30 23:12
6 发表于 2008-10-30 23:14 ·  中国 北京 鹏博士BGP
高级用户
★★★
据说是李先生
积分 609
发帖 400
注册 2008-04-23 15:55
18年会员
UID 116706
性别 男
状态 离线
Originally posted by HAT at 2008-9-7 06:08 PM:
是这个意思吗?
@echo off
type nul>b.txt
for /f "delims=" %%a in (a.txt) do (
findstr /x /c:"%%a" b.txt 2>nul||echo %%a>>b.txt
)



真是这样啊!!

能解释下吗,太高深了看不懂

尤其是 。。。 2>nul||echo %%a>>b.txt 。。。

[ Last edited by qinchun36 on 2008-10-30 at 23:16 ]
7 Re 6楼 发表于 2008-10-30 23:23 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
教程里面有

批处理的教学
http://www.cn-dos.net/forum/viewthread.php?tid=2338

批处理最完整人性化教程
http://www.cn-dos.net/forum/viewthread.php?tid=18482

批处理新手FAQ整理
http://www.cn-dos.net/forum/viewthread.php?tid=34049

中国DOS联盟批处理室经典帖子合集
http://www.cn-dos.net/forum/viewthread.php?tid=31551
论坛跳转: