不用第三放软件还真是有点吃力。
初步测试成功
以中文句号结尾。
文件大小基本不大于100 k (可自行修改 set /a n=101600 数值的大小)
缺点:
1、效率低 样本文件 2.22m 耗时: 0 小时 1 分钟 3 秒 28 毫秒
2、文件内容不能含有特殊符号
如:英文的 " %^&<>()!& 大概就这几个,不一定全是,但肯定有。。。
为提高效率创建了一个临时文件 tmp.txt (完成后会自动删除)
:- @echo off
- set /a n=101600,kb=n
- set "临时文件=tmp.txt"
- set /p file=请把要处理的文件拖到此处:
- set "file=%file:"=%"
- cls&echo 正在分割 %file% 文件请稍候。。。
- for /f "delims=" %%a in ("%file%") do set wjm=%%~na
- findstr /no ".*" "%file%">"%临时文件%"
- for /f "tokens=2 delims=:" %%a in ('find /c /v "" "%临时文件%"') do set /a z=%%a
- if not exist "%wjm%\" md "%wjm%"
- :list
- set /a x+=1
- if defined t >>"%wjm%\%wjm%_%x%.txt" echo %t%
- set "t="
- if not defined h (set skip=) else (set skip=skip=%h%)
- setlocal enabledelayedexpansion
- for /f "%skip% tokens=1,2* delims=:" %%a in (%临时文件%) do (
- if %%b geq !kb! set /a kb+=n&set flag=a&goto loop
- set /a g+=1
- set !g!=%%c&set /a h=%%a,u=%%a
- )
- :loop
- if not defined flag (
- if defined t >>"%wjm%\%wjm%_%x%.txt" echo %t%
- for /l %%a in (1 1 !g!) do >>"%wjm%\%wjm%_%x%.txt" echo.!%%a!
- goto end
- )
- set "var=!%g%!"
- if not defined var set /a g-=1,h-=1&goto loop
- for /f "tokens=1* delims=。" %%a in ("!var!") do (
- if "!var!"=="%%a" set /a g-=1,h-=1&goto loop
- if not "%%b"=="" set "t=%%b"
- set w=%%a。
- )
- for /l %%a in (1 1 !g!) do >>"%wjm%\%wjm%_%x%.txt" echo.!%%a!
- >>"%wjm%\%wjm%_%x%.txt" echo !w!
- endlocal&set h=%h%&set t=%t%&set kb=%kb%&set "u=%u%"
- if %u% neq %z% goto list
- :end
- del/q "%临时文件%" 2>nul
- start "" "%wjm%"
复制代码
[ 本帖最后由 随风 于 2008-10-10 06:06 编辑 ] |