2014-03-04 53 views
0

我正在接收其中包含一系列消息的文本文件。我需要将这些文件分解为单独的文本文件。我收到的文件是这样的:将文本文件分解为多个文件中线

{1:data1}{2:data1}{3:{data1}}{4: 
data1 
data1 
data1 
data1 data data data 
data1 data data data 
data1 
data1 
-}{1:data2}{2:data2}{3:{data2}}{4: 
data2 
data2 data data data 
data2 
data2 data data data 
data2 
-}{1:data3}{2:data3}{3:{data3}}{4: 
data3 
data3 data data data 
data3 
data3 
data3 
-}{1:data4}{2:data4}{3:{data4}}{4: 
data4 
data4 
data4 
data4 
data4 data data data 
data4 
data4 
data4 data data data 
data4 
data4 data data data 
data4 
-}{1:data5}{2:data5}{3:{data5}}{4: 
data5 
data5 
-} 

我需要打破初始文件到在大括号放在同一文件夹内单独的文本文件1之前的结果应该结束了寻找生成的文本文件像这样:

{1:data1}{2:data1}{3:{data1}}{4: 
data1 
data1 data data data 
data1 
data1 data data data 
data1 
data1 
data1 
-} 

在每个文本文件中可以有动态数量的消息。我找到了下面的代码并对其进行了调整,但无法实现我想要的功能。任何帮助将不胜感激。

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

GOTO :EOF 
PAUSE 

回答

0

这将单独的文件放入单独的文本文件,命名为DATA1.TXT - 数据n .TXT。显然将批处理文件中的data.txt更改为数据文件的名称。

@echo off 

setLocal enableDelayedExpansion 
set c=1 

for /f "delims=" %%a in (data.txt) do (
    set line=%%a 
    if "!line:~0,2!"=="-}" (
     echo -}>>data!c!.txt 
     set /a c+=1 
     if "!line:~2!" NEQ "" echo !line:~2!>>data!c!.txt 
    ) else echo !line!>>data!c!.txt 
) 

你可能想要让名字有点更有活力,我可以帮你与如果需要的话。

+0

这很好用!除了我注意到有多个单词用空格分隔的行只是获取新文件中的第一个单词。我编辑了上面的帖子来说明。 – user3381200

+0

@ user3381200当然。对不起,我编辑了我的答案。 – unclemeat

+0

这工作太棒了。非常感谢你的不体面!这正是我需要的。 – user3381200

相关问题