可以将几万几十万条的文本或者execl等文本数据按你的需求切割并分别保存。但是注意数据需要每行一个排列。
@echo off
setlocal enabledelayedexpansion
color df
mode con: cols=60 lines=20
:memu
::设置变量
set xian=----------------------------
set path1=
set path2=
set number=0
title ##文本分割## %date% %time%
::要分割的文件路径
echo\
echo #=====================##功能##======================#
echo # #
echo # 将一个文本平均分割成若干份 #
echo # #
echo # 可设置每份文本分割后的行数 #
echo # #
echo # (行数为2-10000) #
echo # #
echo #==================##直接拖入即可##=================#
echo\
set /p path1=要分割的文本路径(必须为文本类):
echo\
::获取文件名
for %%i in (%path1%) do (
set path3=%%~nxi
)
::修正路径,以免出错
for %%i in (%path1%) do (
set path1=%%~fsi
)
::判断%path1%是否为空值,真则跳转到开始
if "%path1%"=="" (
cls
echo 要分割的文本路径,不能为空。
echo %xian%
goto memu)
::要保存的目标路径
set /p path2=要保存的目标路径(目录/文件夹):
echo\
::修正路径,以免出错
for %%i in (%path2%) do (
set path2=%%~fsi
)
::判断%path2%是否为空值,真则跳转到开始
if "%path2%"=="" (
cls
echo 要保存的目标路径,不能为空。
echo %xian%
goto memu)
::每段要分割的行数
set /p number=每段要分割的行数(2-10000):
echo\
::判断%number%是否正确,否则跳转到开始
for /l %%i in (2,1,10000) do (
if %number% equ %%i+7 (
goto str
)
)
cls
echo 每段要分割的行数,不正确。
echo %xian%
goto memu
:str
cls
::设置变量
::-----------------
::判断文件名
set filenames=0
::判断行数
set numbers=0
::文件名
set filename=1
for /l %%b in (1,1,7) do echo\
echo\
echo 正在处理,这可能需要一段时间,请稍后...
::判断路径是否为真
if not exist %path1% (
cls
echo 要分割的文本路径,未找到。
echo %xian%
goto memu)
if not exist %path2% (
cls
echo 要保存的目标路径,未找到。
echo %xian%
goto memu)
::开始处理
for /f "delims=" %%a in (%path1%) do (
set /a numbers+=1
set /a filenames+=1
echo %%a>>%path2%\!filename!.csv
if !numbers! geq !number! (
set /a filename+=1
set numbers=0
)
)
::结束
cls
echo\
echo 文件 【%path3%】共%filenames%行.
echo\
echo 分割为%filename%段,每段%number%行.
echo\
echo 保存在%path2%.
for /l %%b in (1,1,7) do echo\
echo\
echo 任务已完成,按任意键退出
start %path2% >nul 2>nul
pause>nul&exit