标题: [文件管理] 批处理文本分割器 [打印本页]
作者: jcy0307 时间: 2010-5-17 00:18 标题: 批处理文本分割器
echo 献丑了- @echo off
- setlocal EnableDelayedExpansion
- title 文本分割器 ****JCY0307****
- mode con: cols=45 lines=20
- ::批处理之家-http://bathome.l3.wuyou.com/
- color 0a
- :zcd
- cls
- echo.
- echo.
- echo.
- echo ╭──────╮
- echo ╭───┤ 文本分割器 ├───╮
- echo │ ╰──────╯ │
- echo │ 1.指定大小分割文本 │
- echo │ │
- echo │ 2.指定个数分割文本 │
- echo │ │
- echo │ Q.退 出 │
- echo │ │
- echo ╰──────────────╯
- echo.
- echo ────────────────
- echo.
- set zcd=
- set/p zcd= 请输入选项:
- if /i "%zcd%"=="1" goto kb
- if /i "%zcd%"=="2" goto gs
- if /i "%zcd%"=="q" exit
- if /i "%zcd%"=="" goto zcd
- :kb
- cls
- echo 输入Q返回主菜单
- set a=
- set/p a=请将文件拖入:
- if /i "%a%"=="q" goto zcd
- for %%i in (%a%) do set /a c=%%~zi/1024
- cls
- echo 文件大小:%c%KB
- ping -n 3 127.1>nul
- cls
- set b=
- set/p b=请设定分割后文件大小(KB):
- set /a e=%b%*1024
- set /a f=%c%/%b%
- cls
- echo 以%b%KB分割后,您将得到%f%个文件。3秒后开始分割.....
- ping -n 4 127.1>nul
- cls
- set d=1
- for %%i in (%a%) do set wjm=%%~ni
- for /f "delims=" %%j in (%a%) do (
- echo %%j>>%wjm%!d!.txt
- cls
- echo 正在分割 %wjm% 第!d!部分......
- for %%k in (%wjm%!d!.txt) do if %%~zk GEQ %e% set /a d+=1
- )
- cls
- echo 分割 %wjm% 完成,共分割出了!d!个文件!
- if not exist %wjm% md %wjm%
- move %wjm%*.txt %wjm%>nul 2>nul
- pause>nul
- goto zcd
- :gs
- cls
- echo 输入Q返回主菜单
- set a=
- set/p a=请将文件拖入:
- if /i "%a%"=="q" goto zcd
- cls
- echo 正在计算文本行数,请稍等......
- for /f "delims=" %%i in (%a%) do set/a b+=1
- cls
- set c=
- set/p c=请输入要得到的文件个数:
- set/a d=%b%/%c%+3
- cls
- echo 正在分割,请稍等......
- set e=1
- set f=0
- for %%k in (%a%) do set wjm=%%~nk
- for /f "delims=" %%j in (%a%) do (
- echo %%j>>%wjm%!e!.txt
- set/a f+=1
- if !f! GEQ %d% set/a e+=1 & set f=0
- )
- cls
- echo 分割完成
- if not exist %wjm% md %wjm%
- move %wjm%*.txt %wjm%>nul 2>nul
- pause>nul
- goto zcd
复制代码
作者: xiexiaolesky 时间: 2010-6-9 12:29 标题: 支持
顶下哈 呵呵 很实用 复制下来研究下 呵呵
作者: crartor 时间: 2010-6-10 10:21
貌似有漏洞哦:如果文本中有""^&等符号,那么在用echo 输出到文件时就会出问题……
作者: ZJHJ 时间: 2010-6-15 17:18
不可靠的,掉字符了。
作者: Batcher 时间: 2010-6-15 19:31 标题: 回复 4楼 的帖子
给个例子吧,让楼主修复一下。
作者: jcy0307 时间: 2010-6-17 23:40
谢谢各位的意见 过段时间再做修改 最近比较忙 也没时间搞这些了
郁闷死了 工作用的电脑硬盘烧了 数据恢复也不行了
哎。。。。
作者: ZJHJ 时间: 2010-6-21 13:46
RD 5楼
1 掉感叹号了
2 按字节分割有误差
如果改成下面的代码,可以解决不掉字符的问题。但是仍然不能准确分割,而且第2个文件不是%e% 。
for /f "delims=" %%a in ('findstr /n .* "%a%"') do (
set "var=%%a"
setlocal enabledelayedexpansion
set var=!var:*:=!
for %%k in (%wjm%!d!.txt) do if %%~zk GEQ %e% set /a d+=1
echo.!var!>>%wjm%!d!.txt
endlocal
)
不能准确分割有可能是在获取%%~zk 时 电脑刷新的原因。
看看哪位高手再出良策!!!
[ 本帖最后由 ZJHJ 于 2010-6-21 17:27 编辑 ]
作者: ZJHJ 时间: 2010-6-21 20:39
我已经发现不能准确分割的原因是:获取%%~zk 时,是以整行为基础的。
有点象 split -c 参数
作者: ZJHJ 时间: 2010-6-21 22:44
哈哈!终于搞定了。
等我把行分割一起贴出
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |