批处理文件检测到重复行并在最后一次重复文本文件后复制

时间:2014-07-21 12:35:37

标签: batch-file

只需要复制文本文件的选定部分。下面给出了一个示例txt文件。

aaa
bbb
ccc
ddd
eee
ccc
fff
ggg

请注意'ccc'在这里重复两次(第3行和第6行)。我需要在'ccc'的最后一次重复之后复制这个文本文件的行(即,在这里的第6行)或更清楚我想将此示例文本文件中的第7行和第8行复制到新的文本文件。我已经尝试过以下给出的程度。下面给出的程序无法填充我的新文本文件,例如check_txt_edited.txt请帮助我完成任务。

@echo off
cd E:\Projects\Retrieve-data
set file=check.txt
type nul > check_txt_edited.txt
IF EXIST %file% (
    for /f %%a in ('type "%file%"^|find "" /v /c') do set /a ttl_cnt=%%a
    for /f "tokens=1 delims=:" %%i in ('findstr /n /c:ccc %file%') do set /a line=%%i
    set /a startline=%line%+1

    for /f %%b in (%file%) do (
        set /a startline+=1
        if %startline% leq %ttl_cnt% echo %* >> check_txt_edited.txt
            )   
) ELSE (
    ECHO %file% does not exist
    pause
)

欢迎任何想法。提前谢谢。

谢谢你, 问候, Prasad Poduval

2 个答案:

答案 0 :(得分:0)

第一步:搜索“ccc”的最后一次出现(%x%=亚麻布):

for /f "tokens=1 delims=:" %%i in ('findstr /n /x /c:"ccc" %file%') do set x=%%i

第二步:写下该行下面的所有行:

more +%x% %file%>check_txt_edited.txt

答案 1 :(得分:0)

@ECHO OFF
SETLOCAL enabledelayedexpansion
SET "target=ccc"
SET occur=2
SET "repro="
(
FOR /f "delims=" %%a IN (q24865244.txt) DO (
 IF defined repro ECHO(%%a
 IF "%%a"=="%target%" (
  SET /a occur-=1
  IF !occur!==0 SET "repro=Y"
  )
)
)>newfile.txt

GOTO :EOF

我使用了一个名为q24865244.txt的文件,其中包含我的测试数据。 生成newfile.txt

只需设定目标并计算适合的数量。

我假设您希望目标与该线匹配。

如果要包含目标行,请在if defined命令的右括号后面调用if "%%a"