中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-10 18:27
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » 怎么去除TXT文件中重复的行
可打印版本  7,800 / 22
第16楼 a9319751 发表于 2006-09-13 23:58
中级用户 发帖 170 积分 439
Originally posted by willsort at 2006-9-13 23:25:
Re a9319751『第 11 楼』:

很抱歉,我的操作失误给你带来了负面影响,对此我郑重表示道歉!

现已对原处理方式作出纠正,望周知。


willsort斑竹这么客气啊
第17楼 vkill 发表于 2006-09-14 00:20
金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽
Originally posted by namejm at 2006-9-13 12:01:
  如果楼主只是想把重复N次的行打印一次,并且无须保持行的相对位置不变的话,可以参考bagpipe曾经写过的一段代码:

  
写的很好
第18楼 redtek 发表于 2006-09-26 07:28
金牌会员 发帖 1,147 积分 2,902
俺觉得要是想挑出唯一的电子邮件地址,在数千个行里,每行一个邮件地址。
或是,要挑出数千行里必须唯一的电话号码,
那么,其实可以象开玩笑的这么玩好玩~:)



这个是要挑出唯一性的模拟内容,可以存成 Dat.txt 文件与上面方法一试:)




其实,谁让DOS建目录的时候不能建重名的目录名啊,哈哈……
那规则既然被定好了,我们就利用DOS建目录不能重名,
所以,有重名的系统自然会提示说什么什么,

但是!!它是建不上一个重名的目录的,哈哈……
所以,DIR加参数只列文件名,然后按照我建立目录的时间来排序,
当然就是具有唯一性了。

不好意思,这是个开玩笑的玩法,不能用在别的有用的地方,权当大家笑笑开开心~:)

[ Last edited by redtek on 2006-9-26 at 07:31 ]
第19楼 namejm 发表于 2006-09-26 13:15
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  楼上的方法虽然巧妙,但是却有很大的局限性:

  首先,文件名的长度有限制,在XP的NTFS格式的分区中,最长的路径不能超过256个字符,除掉盘符、冒号和斜杠,只剩下最多253个字符的长度能做文件名,所以,当某行的字符数超过253的时候,你的代码就会出错;

  其次,文件名中不能再出现冒号及一些特殊字符,如果文本中正好出现这些字符的话,代码同样会出错;当然,前面的那些代码同样不能处理敏感字符,但是至少还是可以处理冒号的;

  最后,你创建了那么多的文件夹,临时文件的数量够吓人的,呵呵,最后还要删除它,给人的感觉很不爽啊。

  当然,你说过了,这个只是弄来玩玩的,我们也就当做是在做智力体操,拓展思维,博众人一笑吧^_^

[ Last edited by namejm on 2006-9-26 at 13:17 ]
第20楼 redtek 发表于 2006-09-26 20:24
金牌会员 发帖 1,147 积分 2,902
多谢namejm指点,哈哈~:)
第21楼 a9319751 发表于 2006-12-22 08:09
中级用户 发帖 170 积分 439
其实当初我想用这个处理QQ聊天的记录,中间可能有很多重复的,我想把多余的部分删掉,剩下按顺序排列
第22楼 jmz573515 发表于 2006-12-25 11:37
银牌会员 发帖 464 积分 1,212
'功能:删除某个文件中内容相同的行,但保留内容相同的最上面的一行。
'弊端:效率太低。处理文件不要太大,请测试后使用。
'使用方法:将下面的内容复制到记事本另存为a.vbs之后把要处理的文件拖放到a.vbs上面即可。


[ Last edited by jmz573515 on 2006-12-26 at 09:44 AM ]
第23楼 ldlcau 发表于 2007-04-10 05:29
新手上路 发帖 4 积分 10
@echo off
setlocal
if (%1)==() goto end
REM sort/r <%1 >tmp.txt 逆序
sort <%1 >tmp.txt
set "a="&(set b=)
type nul>sss.txt
for /f "delims=" %%a in (tmp.txt) do call :hehe "%%a"

del tmp.txt
set "a="&(set b=)
echo 完成
goto :eof

:hehe
set a=%b%
set b=%~1
if not "%a%"=="%b%" echo %b% >>sss.txt
goto :eof


:end
echo 对不起,参数错误!!!

请教下怎么按每行的字符数排列
上一页  1 2
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023