中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-07-06 23:13
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]求如何判断每行相同的文本并删除它 查看 870 回复 11
楼 主 [求助]求如何判断每行相同的文本并删除它 发表于 2007-04-05 11:59 ·  中国 浙江 杭州 华数
初级用户
积分 53
发帖 23
注册 2007-02-02 23:27
19年会员
UID 78449
性别 男
状态 离线
例如有文件:
12345,
12345,
12346,
12456,
.....

能不能做个批处理判断该文件中的每行是否都相同,如果都相同,则运行某个程序,不同的话,就显示文件的内容.
2 发表于 2007-04-05 13:32 ·  中国 安徽 蚌埠 电信
中级用户
★★
积分 292
发帖 137
注册 2007-04-03 01:59
19年会员
UID 83758
性别 男
状态 离线
似乎不太可能吧
学艺不精 只知道用
fc 1.txt 2.txt >3.txr
比较1.txt 和 2.txt 的不同 然后写到3.txt里
3 发表于 2007-04-06 00:56 ·  中国 四川 成都 电信
初级用户
游荡的孤魂
积分 79
发帖 29
注册 2007-04-02 11:08
19年会员
UID 83714
性别 男
来自 湖南
状态 离线
对文件内容排序,然后判断首尾两行是否相同既可.
4 发表于 2007-04-06 05:59 ·  中国 浙江 杭州 华数
初级用户
积分 53
发帖 23
注册 2007-02-02 23:27
19年会员
UID 78449
性别 男
状态 离线
高手们帮帮忙吧.能不能不用系统以后的程序啊?直接用批处理解决
5 发表于 2007-04-06 06:11 ·  中国 广东 广州 海珠区 电信
银牌会员
★★★
积分 1,206
发帖 517
注册 2007-03-25 01:18
19年会员
UID 82819
性别 男
状态 离线
@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 发表于 2007-04-07 02:17 ·  中国 福建 福州 电信
初级用户
积分 53
发帖 23
注册 2007-02-02 23:27
19年会员
UID 78449
性别 男
状态 离线
楼上的好像不能用的,什么都没实现
7 发表于 2007-04-07 02:35 ·  中国 广东 广州 天河区 电信
高级用户
★★★
潜水修练批处理
积分 788
发帖 366
注册 2006-12-31 02:43
19年会员
UID 75048
性别 男
状态 离线
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
8 发表于 2007-04-07 02:50 ·  中国 浙江 杭州 电信
银牌会员
★★★
积分 1,928
发帖 931
注册 2007-01-06 11:46
19年会员
UID 75624
性别 男
状态 离线
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 ]
9 发表于 2007-04-07 03:23 ·  中国 广东 电信
初级用户
游荡的孤魂
积分 79
发帖 29
注册 2007-04-02 11:08
19年会员
UID 83714
性别 男
来自 湖南
状态 离线

@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
10 发表于 2007-04-07 04:40 ·  中国 上海 浦东新区 电信
中级用户
★★
积分 302
发帖 138
注册 2007-03-29 02:33
19年会员
UID 83224
性别 男
状态 离线
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 发表于 2007-04-07 08:58 ·  中国 广东 广州 天河区 电信
高级用户
★★★
潜水修练批处理
积分 788
发帖 366
注册 2006-12-31 02:43
19年会员
UID 75048
性别 男
状态 离线
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的最后一行。
起码也得

for /f "de ...



试过了,没有问题

楼主的要求是:判断该文件中的每行是否都相同

aa的值是a.txt中的最后一行,那只要前面的所有行与最后一行都相同,那这个文件的每一行自然也就相同了;相反如果前面某一行也最后一行不同,那这个文件就不是每行都相同了,根本不需要拿每一行的出来都和其他行比较
12 发表于 2007-04-07 09:59 ·  中国 广东 广州 海珠区 电信
银牌会员
★★★
积分 1,206
发帖 517
注册 2007-03-25 01:18
19年会员
UID 82819
性别 男
状态 离线
Originally posted by lililulula at 2007-4-6 03:40 PM:
5楼的朋友的代码好象有点问题 比如:4567
456
456
...

哦。。的确会这样。

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

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

原因是:4567包含了456。

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

现在研究vbs中。。

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

研究完vbs再搞这个。
知,不觉多。不知,乃求知
论坛跳转: