Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 中途将文本文件拆分为多个文件_Batch File - Fatal编程技术网

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
)

您可能想让名称更具动态性,如果需要,我可以帮助您。

这非常有效!但是我注意到,有多个单词被空格分隔的行只得到新文件中的第一个单词。我编辑了上面的文章来说明。这真是太棒了。非常感谢你!这正是我需要的。