@echo off
::wangwei QQ251485609 by 20100622
endlocal enabledelayedexpansion
title 文件分割
@echo.
@echo. 本程序仅限于文本文件分割
echo.
echo. 可以将文件按“行”分割成N份。也可以按“字节”分割成N份
@echo.
@echo. 注:字节分割是保留整行截取,所以结果大于设定数值。
@echo.
set /p file= 输入要处理的文件:
for %%i in (%file%) do (
set "jkz=%%~ni"
set "jz=%%~nxi"
set "jz1=%%~nxi"
set /a "size=%%~zi")
for /f "tokens=3 delims= " %%i in ('find /v /c "" %file%') do set m=%%i
cls
@echo.
@echo 当前文件共 %m% 行, 长度: 0%size:~0,-3%.%size:~-3,3% kb
@echo.
set/p hxz= 请选择: 按“行”分割h: 按“字节”分割zj:
if %hxz%==h goto hfg
if %hxz%==zj goto zjfg
:hfg
@echo.
set/p h= 输入新文件的行数:
@echo.
@echo 正在运行中... ...
for /f "delims=" %%i in ('findstr /n .* %file%') do (
set /a sw=%%i 2>nul
set "v=%%i"
setlocal enabledelayedexpansion
set "v=!v:*:=!"
set/a z=!sw!/%h%+1
set/a k=%h%*!z!+1
if !sw! LSS !k! ( echo.!v!>>%jz%_!z!.txt)
@echo !z!>tem.txt
endlocal )
for /f %%i in (tem.txt) do set z=%%i
del tem.txt
@echo.
@echo 一共分割成了%z%份文件, 分别是:
@echo.
for /l %%i in (1,1,%z%) do (
set /p= %jz%_%%i.txt <nul )
@echo.
@echo.
@echo. 文件分割已经完成。
pause>nul
goto eof
:zjfg
cls
@echo.
@echo 当前文件共 %m% 行, 长度: 0%size:~0,-3%.%size:~-3,3% kb
@echo.
for %%i in (%file%) do (
set /a c=%%~zi
set "jz=%%~nxi" )
echo 文件大小: %c% 字节
@echo.
set/p b= 请设定分割后文件字节大小:
set /a f=%c%/%b%
set d=1
for /f "delims=" %%a in ('findstr /n .* "%file%"') do (
set "var=%%a"
setlocal enabledelayedexpansion
set var=!var:*:=!
for /l %%i in (1,1,%f%) do (
for %%i in (%jz%-%%i.txt) do if %%~zi GEQ %b% set /a d+=1)
echo.!var!>>%jz%-!d!.txt
endlocal )
goto eof