Batch file 中途将文本文件拆分为多个文件
我正在接收包含一系列消息的文本文件。我需要把这些文件分成单独的文本文件。我收到的文件如下所示:Batch file 中途将文本文件拆分为多个文件,batch-file,Batch File,我正在接收包含一系列消息的文本文件。我需要把这些文件分成单独的文本文件。我收到的文件如下所示: {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: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
-}
我需要将初始文件拆分为单独的文本文件,放在1前面的花括号中的同一文件夹中。结果生成的文本文件应如下所示:
{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
这将把文件分成单独的文本文件,名为data1.txt-datan.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
)
您可能想让名称更具动态性,如果需要,我可以帮助您。这非常有效!但是我注意到,有多个单词被空格分隔的行只得到新文件中的第一个单词。我编辑了上面的文章来说明。这真是太棒了。非常感谢你!这正是我需要的。