如何定期将文本块从一个文本文件复制到另一个文本文件

时间:2016-03-02 20:10:03

标签: text batch-processing

我有一个文本(XML)文件,其中包含由字符串/扫描分隔的数据块(每行16行)。我需要将每个第5个数据块(包括前面的/扫描字符串)复制到一个新文件中,基本上将我的一个文本文件转换为5个新文件,其中每个文件包含1/5的数据。我有各种各样的语言(linux,python,R等),我可以选择。例如,给出文字:

/扫描

chunk 1

/扫描

chunk 2

/扫描

chunk 3

/扫描

chunk 4

/扫描

chunk 5

/扫描

chunk 6

/扫描

chunk 7

/扫描

chunk 8

/扫描

chunk 9

/扫描

chunk 10

生成的文件包含:

文件1:

/扫描

chunk 1

/扫描

chunk 6

文件2:

/扫描

chunk 2

/扫描

chunk 7

文件3:

/扫描

chunk 3

/扫描

chunk 8

......等等。

1 个答案:

答案 0 :(得分:0)

@ECHO Off
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=U:\sourcedir"
SET "destdir=U:\destdir"
SET "filename1=%sourcedir%\q35757136.txt"
SET "outfile=%destdir%\q35757136_out"
SET /a outfiles=5
SET /a outnum=0
:: delete existing output files
FOR /L %%a IN (1,1,%outfiles%) DO DEL "%outfile%%%a.txt" >NUL 2>nul
FOR /f "usebackqdelims=" %%a IN ("%filename1%") DO (
 IF "%%a"=="/scan" SET /a outnum=1+(outnum %% %outfiles%^)
 >>"%outfile%!outnum!" ECHO(%%a
)

GOTO :EOF

您需要更改sourcedirdestdir的设置以适合您的具体情况。

我使用了一个名为q35757136.txt的文件,其中包含我的测试数据。

生成定义为%outfile%+ anumber .txt

的文件

对于每行输入,请查看它是否为键字符串。如果是,则递增输出文件选择器。

将每一行重现到所选的输出文件。

假设OP意识到批处理字符串处理的缺点。