我有一个文本(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
......等等。
答案 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
您需要更改sourcedir
和destdir
的设置以适合您的具体情况。
我使用了一个名为q35757136.txt
的文件,其中包含我的测试数据。
生成定义为%outfile%+ anumber .txt
的文件对于每行输入,请查看它是否为键字符串。如果是,则递增输出文件选择器。
将每一行重现到所选的输出文件。
假设OP意识到批处理字符串处理的缺点。