批处理文件将部分从一个文本文件复制到其他文本文件

时间:2014-02-26 16:37:27

标签: batch-file

我需要搜索文本文件中的特定字符串,并将包含我的字符串的两行之间的文本部分复制到其他文本文件中。

示例:假设我的控制字符串是“my_string”,我文件中的文本是:

1st line text
2nd line text my_string more text
3rd line text
4th line text
5th line text my_string more text
6th line text
7th line text
8th line text my_string more text
9th line text
10th line text

因此输出我想要三个文件:

文件1:

2nd line text my_string more text
3rd line text
4th line text

文件2:

5th line text my_string more text
6th line text
7th line text

文件3:

8th line text my_string more text
9th line text
10th line text

有人知道如何使用批处理文件吗?

1 个答案:

答案 0 :(得分:1)

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET /a destadd=0
SET "mystring=my_string"
SET "found="
FOR /f "delims=" %%a IN (q22047584.txt) DO (
 ECHO("%%a"|FIND "%mystring%" >NUL
 IF NOT ERRORLEVEL 1 (SET found=Y&set/a destadd+=1)
 IF DEFINED found >>"file !destadd!" ECHO(%%a
)

GOTO :EOF

这应该执行任务 - q22047584.txt中的数据,并根据要求输出“文件1”..“文件3”。

在执行例程时,假设

File ?不存在。


修改以适应延长的问题

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "mystring=my_string"
SET "found="
FOR /f "delims=" %%a IN (q22047584.txt) DO (
 ECHO("%%a"|FIND "%mystring%" >NUL
 IF NOT ERRORLEVEL 1 (
  SET found=Y
  SET "destadd=%%a"
  SET "destadd=!destadd:*%mystring%=!"
  )
 IF DEFINED found >>"!destadd!" ECHO(%%a
)

GOTO :EOF

然而,此程序存在危险。它假设 - 余数 - 形成一个有效的唯一文件名 - 与样本数据不同。

哦 - 更容易回答整个问题,而不是追逐转变的门柱。