中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]去掉文本文档中相同的行
作者:
标题: [已结]去掉文本文档中相同的行 上一主题 | 下一主题
qinchun36
高级用户

据说是李先生


积分 609
发帖 400
注册 2008-4-23
状态 离线
『楼 主』:  [已结]去掉文本文档中相同的行

文本文档 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 ]

2008-7-22 17:24
查看资料  发送邮件  发短消息 网志  OICQ (182484135)  编辑帖子  回复  引用回复
fuuma
初级用户





积分 32
发帖 14
注册 2007-8-28
状态 离线
『第 2 楼』:  

@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

2008-7-23 16:05
查看资料  发短消息 网志   编辑帖子  回复  引用回复
qinchun36
高级用户

据说是李先生


积分 609
发帖 400
注册 2008-4-23
状态 离线
『第 3 楼』:  



  Quote:
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 ...

谢了啊 ,哈哈

2008-9-5 13:00
查看资料  发送邮件  发短消息 网志  OICQ (182484135)  编辑帖子  回复  引用回复
nanhezzb
初级用户





积分 37
发帖 32
注册 2008-8-21
状态 离线
『第 4 楼』:  

太复杂啊,可以考虑find命令。

2008-9-7 16:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 5 楼』:  Re 4楼

是这个意思吗?
@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 点积分    点击查看详情   
评分人:【 qinchun36 分数: +2  时间:2008-10-30 23:12




2008-9-7 18:08
查看资料  发短消息 网志   编辑帖子  回复  引用回复
qinchun36
高级用户

据说是李先生


积分 609
发帖 400
注册 2008-4-23
状态 离线
『第 6 楼』:  



  Quote:
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 ]

2008-10-30 23:14
查看资料  发送邮件  发短消息 网志  OICQ (182484135)  编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 7 楼』:  Re 6楼

教程里面有

  Quote:
批处理的教学
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





2008-10-30 23:23
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: