中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-06 06:21
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请教如何用P查找文本重复行并复制到另一文本中 查看 978 回复 3
楼 主 请教如何用P查找文本重复行并复制到另一文本中 发表于 2007-10-24 22:02 ·  中国 浙江 杭州 电信
初级用户
★★
积分 172
发帖 77
注册 2006-11-23 15:05
19年会员
UID 71489
性别 男
状态 离线
我找到了一个清除重复行的P.如何修改这个P而能变成只是将重复行复制到另一文本中,需要将重复几次的就写入几次,就是说如果文本中重复了三次,就写入新的文本中三次

下面是清除重复行的P
@echo off
echo 正在查找文本相同行,请等待.....
(echo 清除重复行后的文件内容:& echo.)>str_.txt

setlocal enabledelayedexpansion
for /f "delims=" %%i in (test.txt) do (
if not defined %%i set %%i=A & echo %%i>>str_.txt)

echo 清理完毕,清理后的文件保存在:str_.txt
pause>nul
2 发表于 2007-10-25 00:53 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
如果重复三次,但不是连续重复,写入的也不会是连续的.但次数不会错


@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%i in (test.txt) do (
if not defined %%i (set %%i=A) else echo %%i>>str_.txt
)
pause
致精致简!
3 发表于 2007-10-25 10:52 ·  中国 浙江 杭州 电信
初级用户
★★
积分 172
发帖 77
注册 2006-11-23 15:05
19年会员
UID 71489
性别 男
状态 离线
谢谢
4 发表于 2007-10-25 13:54 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
2楼的错了,会少写一次.
这样试试.....


@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%i in (test.txt) do set _%%i+=1
for /f "tokens=1* delims=_=" %%i in ('set _') do (
set num=0
if not "%%j"=="1" call :lis "%%i" %%j
)
pause
exit
:lis
set /a num+=1
echo %~1>>str_.txt
if %num% equ %2 goto :eof
goto lis
致精致简!
论坛跳转: