找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 23814|回复: 8

[文件管理] 批处理文本分割器

[复制链接]
发表于 2010-5-17 00:18:06 | 显示全部楼层 |阅读模式
echo  献丑了
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. title 文本分割器 ****JCY0307****
  4. mode con: cols=45 lines=20
  5. ::批处理之家-http://bathome.l3.wuyou.com/
  6. color 0a
  7. :zcd
  8. cls
  9. echo.
  10. echo.
  11. echo.
  12. echo               ╭──────╮
  13. echo       ╭───┤ 文本分割器 ├───╮   
  14. echo       │      ╰──────╯      │
  15. echo       │     1.指定大小分割文本     │
  16. echo       │                            │
  17. echo       │     2.指定个数分割文本     │
  18. echo       │                            │
  19. echo       │     Q.退 出                │
  20. echo       │                            │
  21. echo       ╰──────────────╯   
  22. echo.
  23. echo       ────────────────
  24. echo.
  25. set zcd=
  26. set/p zcd=    请输入选项:
  27. if /i "%zcd%"=="1" goto kb
  28. if /i "%zcd%"=="2" goto gs
  29. if /i "%zcd%"=="q" exit
  30. if /i "%zcd%"=="" goto zcd
  31. :kb
  32. cls
  33. echo 输入Q返回主菜单
  34. set a=
  35. set/p a=请将文件拖入:
  36. if /i "%a%"=="q" goto zcd
  37. for %%i in (%a%) do set /a c=%%~zi/1024
  38. cls
  39. echo 文件大小:%c%KB
  40. ping -n 3 127.1>nul
  41. cls
  42. set b=
  43. set/p b=请设定分割后文件大小(KB):
  44. set /a e=%b%*1024
  45. set /a f=%c%/%b%
  46. cls
  47. echo 以%b%KB分割后,您将得到%f%个文件。3秒后开始分割.....
  48. ping -n 4 127.1>nul
  49. cls
  50. set d=1
  51. for %%i in (%a%) do set wjm=%%~ni
  52. for /f "delims=" %%j in (%a%) do (
  53. echo %%j>>%wjm%!d!.txt
  54. cls
  55. echo 正在分割 %wjm% 第!d!部分......
  56. for %%k in (%wjm%!d!.txt) do if %%~zk GEQ %e% set /a d+=1
  57. )
  58. cls
  59. echo 分割 %wjm% 完成,共分割出了!d!个文件!
  60. if not exist %wjm% md %wjm%
  61. move %wjm%*.txt %wjm%>nul 2>nul
  62. pause>nul
  63. goto zcd
  64. :gs
  65. cls
  66. echo 输入Q返回主菜单
  67. set a=
  68. set/p a=请将文件拖入:
  69. if /i "%a%"=="q" goto zcd
  70. cls
  71. echo 正在计算文本行数,请稍等......
  72. for /f "delims=" %%i in (%a%) do set/a b+=1
  73. cls
  74. set c=
  75. set/p c=请输入要得到的文件个数:
  76. set/a d=%b%/%c%+3
  77. cls
  78. echo 正在分割,请稍等......
  79. set e=1
  80. set f=0
  81. for %%k in (%a%) do set wjm=%%~nk
  82. for /f "delims=" %%j in (%a%) do (
  83. echo %%j>>%wjm%!e!.txt
  84. set/a f+=1
  85. if !f! GEQ %d% set/a e+=1 & set f=0
  86. )
  87. cls
  88. echo 分割完成
  89. if not exist %wjm% md %wjm%
  90. move %wjm%*.txt %wjm%>nul 2>nul
  91. pause>nul
  92. goto zcd
复制代码
发表于 2010-6-9 12:29:55 | 显示全部楼层

支持

顶下哈 呵呵 很实用 复制下来研究下 呵呵
发表于 2010-6-10 10:21:36 | 显示全部楼层
貌似有漏洞哦:如果文本中有""^&等符号,那么在用echo 输出到文件时就会出问题……
发表于 2010-6-15 17:18:49 | 显示全部楼层
不可靠的,掉字符了。
发表于 2010-6-15 19:31:42 | 显示全部楼层

回复 4楼 的帖子

给个例子吧,让楼主修复一下。
 楼主| 发表于 2010-6-17 23:40:00 | 显示全部楼层
谢谢各位的意见 过段时间再做修改 最近比较忙 也没时间搞这些了
郁闷死了 工作用的电脑硬盘烧了 数据恢复也不行了
哎。。。。
发表于 2010-6-21 13:46:05 | 显示全部楼层
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 编辑 ]
发表于 2010-6-21 20:39:46 | 显示全部楼层
我已经发现不能准确分割的原因是:获取%%~zk 时,是以整行为基础的。
有点象 split -c 参数
发表于 2010-6-21 22:44:29 | 显示全部楼层
哈哈!终于搞定了。
等我把行分割一起贴出
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 00:11 , Processed in 0.013589 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表