2014-02-26 99 views
0

我需要搜索文本文件中的特定字符串,並將包含我的字符串的兩行之間的文本部分複製到其他文本文件。批文件將文本文件從一個文本文件複製到其他文本文件

例如:假設我的控制字符串爲 「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
@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 

沒有與然而這個過程的危險。它假定剩下的行形成一個有效的唯一文件名 - 與您的示例數據不同。

哦 - 對整個問題的迴應要容易得多,而不是追求轉換目標。

+0

如果我想用my_string之後的文本保存每個文件與文件名相同,而不是「文件1」,「文件2」...? –

+0

非常感謝@Magoo –

相關問題