我需要搜索文本文件中的特定字符串,并将包含我的字符串的两行之间的文本部分复制到其他文本文件中。
示例:假设我的控制字符串是“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
有人知道如何使用批处理文件吗?
答案 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
然而,此程序存在危险。它假设 - 余数 - 形成一个有效的唯一文件名 - 与样本数据不同。
哦 - 更容易回答整个问题,而不是追逐转变的门柱。