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
将文本文件分割成指定大小 bbs.bathome.cn/viewthread.php? ... Q: 为方便他人复制,如何给代码加code标签? A: www.cn-dos.net/forum/viewthrea ... 参考:www.cn-dos.net/forum/faq.php?p ...

作者: singlion     时间: 2008-12-6 21:52
可是那些代码执行好慢啊!还不如我的块。 另:我不要求每个文件以什么字符结尾