中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]求如何判断每行相同的文本并删除它
作者:
标题: [求助]求如何判断每行相同的文本并删除它 上一主题 | 下一主题
fjcase
初级用户





积分 53
发帖 23
注册 2007-2-2
状态 离线
『楼 主』:  [求助]求如何判断每行相同的文本并删除它

例如有文件: 12345, 12345, 12346, 12456, ..... 能不能做个批处理判断该文件中的每行是否都相同,如果都相同,则运行某个程序,不同的话,就显示文件的内容.


2007-4-5 11:59
查看资料  发短消息  网志   编辑帖子  回复  引用回复
bw070
中级用户





积分 292
发帖 137
注册 2007-4-3
状态 离线
『第 2 楼』:  

似乎不太可能吧 学艺不精 只知道用 fc 1.txt 2.txt >3.txr 比较1.txt 和 2.txt 的不同 然后写到3.txt里


2007-4-5 13:32
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
digger
初级用户

游荡的孤魂



积分 79
发帖 29
注册 2007-4-2
来自 湖南
状态 离线
『第 3 楼』:  

对文件内容排序,然后判断首尾两行是否相同既可.


2007-4-6 00:56
查看资料  发短消息  网志   编辑帖子  回复  引用回复
fjcase
初级用户





积分 53
发帖 23
注册 2007-2-2
状态 离线
『第 4 楼』:  

高手们帮帮忙吧.能不能不用系统以后的程序啊?直接用批处理解决


2007-4-6 05:59
查看资料  发短消息  网志   编辑帖子  回复  引用回复
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 5 楼』:  

@echo off & SetLocal EnableDelayedExpansion set ReadFile=1.txt set OutFile=2.txt for /f "tokens=* " %%i in (%ReadFile%) do ( if not exist %OutFile% echo %%i>%OutFile% type 2.txt | find /i "%%i" if errorlevel 1 echo %%i >>%OutFile% ) pause




知,不觉多。不知,乃求知
2007-4-6 06:11
查看资料  发短消息  网志   编辑帖子  回复  引用回复
fjcase
初级用户





积分 53
发帖 23
注册 2007-2-2
状态 离线
『第 6 楼』:  

楼上的好像不能用的,什么都没实现


2007-4-7 02:17
查看资料  发短消息  网志   编辑帖子  回复  引用回复
dikex
高级用户

潜水修练批处理



积分 788
发帖 366
注册 2006-12-31
状态 离线
『第 7 楼』:  

for /f "delims=" %%i in (a.txt) do set aa=%%i
for /f "delims=" %%i in (a.txt) do if not "%aa%"=="%%i" goto :ec
notepad.exe
goto :eof

:ec
type a.txt | more
pause


2007-4-7 02:35
查看资料  发短消息  网志   编辑帖子  回复  引用回复
wudixin96
银牌会员





积分 1928
发帖 931
注册 2007-1-6
状态 离线
『第 8 楼』:  

Originally posted by dikex at 2007-4-7 02:35 AM: for /f "delims=" %%i in (a.txt) do set aa=%%i for /f "delims=" %%i in (a.txt) do if not "%aa%"=="%%i" goto :ec notepad.exe goto :eof :ec type a. ...
有没试过啊??for /f "delims=" %%i in (a.txt) do set aa=%%i执行完了才执行后面的句子的。 aa的值是a.txt的最后一行。 起码也得
for /f "delims=" %%i in (a.txt) do (
set aa=%%i
for /f "delims=" %%i in (a.txt) do if not "%aa%"=="%%i" goto :ec
)
[ Last edited by wudixin96 on 2007-4-7 at 02:55 AM ]


2007-4-7 02:50
查看资料  发短消息  网志   编辑帖子  回复  引用回复
digger
初级用户

游荡的孤魂



积分 79
发帖 29
注册 2007-4-2
来自 湖南
状态 离线
『第 9 楼』:  

@echo off
set str1=
for /f "delims=" %%i in ('sort test.txt') do (
    if not defined str1 (
        set "str1=%%i"
    ) else set "str2=%%i"
)
if "%str1%"=="%str2%" echo (文件的每行内容都相同) else echo 文件的每行内容不完全相同
pause


2007-4-7 03:23
查看资料  发短消息  网志   编辑帖子  回复  引用回复
lililulula
中级用户





积分 302
发帖 138
注册 2007-3-29
状态 离线
『第 10 楼』:  

5楼的朋友的代码好象有点问题 比如:4567 456 456 55 这样的内容只要首行开始第n行的内容包括n行以后的内容,如上面的第1行4567,包含第2,3行的456,然后执行结果就会把被包含的数字内容全部删除 此例执行结果为:4567 55 两行456均被删除,原因不清楚 另外请教5楼
type 2.txt | find /i "%%i" if errorlevel 1 echo %%i >>%OutFile%
此2行的作用,其中打出2.txt的内容也就是要被处理的文件内容然后查找被处理的文件中的所有内容,是比较?这里有点迷糊,还希望解答


2007-4-7 04:40
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
dikex
高级用户

潜水修练批处理



积分 788
发帖 366
注册 2006-12-31
状态 离线
『第 11 楼』:  

Originally posted by wudixin96 at 2007-4-6 01:50 PM: 有没试过啊??for /f "delims=" %%i in (a.txt) do set aa=%%i执行完了才执行后面的句子的。 aa的值是a.txt的最后一行。 起码也得 [code] for /f "de ...
试过了,没有问题 楼主的要求是:判断该文件中的每行是否都相同 aa的值是a.txt中的最后一行,那只要前面的所有行与最后一行都相同,那这个文件的每一行自然也就相同了;相反如果前面某一行也最后一行不同,那这个文件就不是每行都相同了,根本不需要拿每一行的出来都和其他行比较


2007-4-7 08:58
查看资料  发短消息  网志   编辑帖子  回复  引用回复
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 12 楼』:  

Originally posted by lililulula at 2007-4-6 03:40 PM: 5楼的朋友的代码好象有点问题 比如:4567 456 456 ...
哦。。的确会这样。 那么就再加多一个for循环就搞定了。 另一个for循环判定是否绝对相等。。 原因是:4567包含了456。 另:因为批处理不支持汉字的拆分+加密工程。。 现在研究vbs中。。 暂时大家给我的短消息都不回了。 研究完vbs再搞这个。




知,不觉多。不知,乃求知
2007-4-7 09:59
查看资料  发短消息  网志   编辑帖子  回复  引用回复

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


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



论坛跳转: