中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-24 23:46
47,813 主题排行 / 349,918 发帖 / 今日 1 篇 / 48,274 会员排行
DOS批处理 & 脚本技术(批处理室) » [求助]求如何判断每行相同的文本并删除它
可打印版本  988 / 11
第1楼 fjcase 发表于 2007-04-05 11:59
初级用户 发帖 23 积分 53
[求助]求如何判断每行相同的文本并删除它
例如有文件:
12345,
12345,
12346,
12456,
.....

能不能做个批处理判断该文件中的每行是否都相同,如果都相同,则运行某个程序,不同的话,就显示文件的内容.
第2楼 bw070 发表于 2007-04-05 13:32
中级用户 发帖 137 积分 292
似乎不太可能吧
学艺不精 只知道用
fc 1.txt 2.txt >3.txr
比较1.txt 和 2.txt 的不同 然后写到3.txt里
第3楼 digger 发表于 2007-04-06 00:56
初级用户 发帖 29 积分 79 来自 湖南
对文件内容排序,然后判断首尾两行是否相同既可.
第4楼 fjcase 发表于 2007-04-06 05:59
初级用户 发帖 23 积分 53
高手们帮帮忙吧.能不能不用系统以后的程序啊?直接用批处理解决
第5楼 flyinspace 发表于 2007-04-06 06:11
银牌会员 发帖 517 积分 1,206
@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
第6楼 fjcase 发表于 2007-04-07 02:17
初级用户 发帖 23 积分 53
楼上的好像不能用的,什么都没实现
第7楼 dikex 发表于 2007-04-07 02:35
高级用户 发帖 366 积分 788
第8楼 wudixin96 发表于 2007-04-07 02:50
银牌会员 发帖 931 积分 1,928
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的最后一行。
起码也得


[ Last edited by wudixin96 on 2007-4-7 at 02:55 AM ]
第9楼 digger 发表于 2007-04-07 03:23
初级用户 发帖 29 积分 79 来自 湖南
第10楼 lililulula 发表于 2007-04-07 04:40
中级用户 发帖 138 积分 302
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的内容也就是要被处理的文件内容然后查找被处理的文件中的所有内容,是比较?这里有点迷糊,还希望解答
第11楼 dikex 发表于 2007-04-07 08:58
高级用户 发帖 366 积分 788
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的最后一行。
起码也得
第12楼 flyinspace 发表于 2007-04-07 09:59
银牌会员 发帖 517 积分 1,206
Originally posted by lililulula at 2007-4-6 03:40 PM:
5楼的朋友的代码好象有点问题 比如:4567
456
456
...

哦。。的确会这样。

那么就再加多一个for循环就搞定了。

另一个for循环判定是否绝对相等。。

原因是:4567包含了456。

另:因为批处理不支持汉字的拆分+加密工程。。

现在研究vbs中。。

暂时大家给我的短消息都不回了。

研究完vbs再搞这个。
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023