你们的代码太精炼了,我许多方面都没有看明白。
我以前写了一个切分文本的代码,很菜。代码很长,很繁琐,方法也简单,拿出来请各位高手改改。
但,我试过好多次,没有出错过。- :: 代码代号含义:
- :: k=文本总行数
- :: cut=切分的列数
- :: x=k/c=每列的行数
- :: r=remainder=余数行=k-cx
- :: ak=总添加的行数=(cut*(x+1))-k
- :: s=记录当前文件需要排列的行数=x或(x+1)
- :: s2=少行列=s-ak
- :: n=记录当前列输出到第几行
- :: m=记录当前输出到第几个文件
-
- @echo off
- title 切分文本程序(三分法)
-
- set file=a
- set Cut=9
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in (%file%.txt) do set/a k+=1
- set /a x=%k%/%Cut%
- set /a r=%k%-%Cut%*%x%
- set /a ak=(%Cut%*(%x%+1))-%k%
- set m=
- set m=1
- set n=
- for /f "delims=" %%i in (%file%.txt) do (
- set /a n+=1
- if !r! leq 0 (
- set /a s=%x%
- if !n! leq !s! echo %%i>>%file%_!m!.txt
- if !n! equ !s! set n=0 & set /a m+=1
- ) else (
- set /a s=%x%+1
- if !ak! lss !s! (
- if !n! leq !s! echo %%i>>%file%_!m!.txt
- if !n! equ !s! set n=0 & set /a m+=1
- if !m! equ !cut! set /a s2=!s!-!ak!
- if !n! equ !s2! for /l %%i in (1,1,%ak%) do echo.>>%file%_!cut!.txt
- ) else (
- if !m! leq !r! (
- if !n! leq !s! echo %%i>>%file%_!m!.txt
- if !n! equ !s! set n=0 & set /a m+=1
- ) else (
- if !m! gtr !r! if !n! leq !x! echo %%i>>%file%_!m!.txt
- if !m! gtr !r! if !n! equ !x! echo.>>%file%_!m!.txt
- if !n! equ !x! set n=0 & set /a m+=1
- )
- )
- )
- )
- endlocal
- goto:eof
复制代码
|