Board logo

标题: [求助]批处理分割文本文件如何又快又好 [打印本页]

作者: singlion     时间: 2008-12-6 21:16    标题: [求助]批处理分割文本文件如何又快又好

我经常用MP4看小说,但是从网上下载的小说往往都很大,多达4M,用MP4打开时会非常慢,不知道的人还以为是死机。
所以我就想弄个文本分割程序。
我的思路是,因为不太容易按文件大小分割,所以就想到按行数分割,当然直接用for,但是保存时有两种方法:一是每一行保存一次,行数到达指定值时更换文件名;二是先读取足够的行数,放入一个变量里面,然后一下就保存了。
两种方法各有优点各有缺点。
前者,处理速度极慢,如果设置100行分成一个文件,一般每个文件需要10秒多才能写完。
后者,速度倒是快点,但是分割后的文件用记事本打开时,所有的回车符都显示成黑块,在其他文本编辑程序(如写字板、Word)中能正常打开。

希望高手帮忙给出一个最佳方案。


我的代码如下:
@echo off
cls & color 79
setlocal enabledelayedexpansion

:inputfilename
set /p txtfile=请输入要分割的文件位置及文件名:
if not defined txtfile goto :inputfilename

set /p lines=请输入每多少行分割为一个文件(请输入50到300之间的数):
if not defined lines set /a lines=100

cls
set /a line=0
set /a files=1
set filename=第!files!部分.txt
mode con lines=2
echo 正在写第1个文件...
set str=
for /f "delims=" %%i in (%txtfile%) do (
set /a line+=1
set str=!str!%%i
if "!line!"=="!lines!" (
echo !str!>!filename!
cls
set /a line=0
set /a files+=1
set filename=第!files!部分.txt
echo 正在写第!files!个文件...
set str=
)
)
echo !str!>!filename!
cls
echo 完成。按任意键退出程序...
pause>nul
del c:\tmp
[ Last edited by singlion on 2008-12-6 at 21:52 ]
作者: HAT     时间: 2008-12-6 21:39
将文本文件分割成指定大小
http://bbs.bathome.cn/viewthread.php?tid=2104

Q: 为方便他人复制,如何给代码加code标签?
A: http://www.cn-dos.net/forum/viewthread.php?tid=43735#pid304733
参考:http://www.cn-dos.net/forum/faq.php?page=misc#1
作者: singlion     时间: 2008-12-6 21:52
可是那些代码执行好慢啊!还不如我的块。

另:我不要求每个文件以什么字符结尾