我正在接收包含一系列消息的文本文件。我需要将这些文件分成单独的文本文件。我收到的文件如下:
{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: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 :(得分:0)
这会将文件分成单独的文本文件,名为data1.txt - data 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
)
你可能想让名字更有活力,如果需要,我可以帮你解决。