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

[文本处理] [已解决]批处理如何把文本文件分割成N个文本文件?

[复制链接]
发表于 2009-7-29 23:47:17 | 显示全部楼层 |阅读模式
比如我现在有一文本文件,我要上传,但是太大(文件8-12M之间),不允许,我想把它分割成N个小文件(按行分割,行数可以自行设定),文件内容全部是数字和部分符号,比如内容:
1 2 3 4 5 6+7
2 3 4 5 6 7+8
3 4 5 6 7 8+9
4 5 6 7 8 9+10
5 6 7 8 9 10+11
6 7 8 9 10 11+12
7 8 9 10 11 12+13
8 9 10 11 12 13+14
9 10 11 12 13 14+15
10 11 12 13 14 15+16
现在想用批处理自动把它分割成N个文本文件,要求为按行分割(行数可以自行设置)这次比如共10行,我要分成每2行一个文件,则第一个为
1 2 3 4 5 6+7
2 3 4 5 6 7+8
第二个文本的内容为
3 4 5 6 7 8+9
4 5 6 7 8 9+10
第三个文本的内容为
5 6 7 8 9 10+11
6 7 8 9 10 11+12

.................

这个批处理该如何写呢?

[ 本帖最后由 zyouong 于 2009-7-30 12:55 编辑 ]

评分

参与人数 1PB +2 收起 理由
CrLf + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2009-7-30 00:42:12 | 显示全部楼层
是把文本平分为 5 份,还是两行为一份?如果是后者:
  1. @echo off
  2. set file="abc.txt"

  3. for %%a in (%file%) do set "dpn=%%~dpna" & set "x=%%~xa"
  4. set /a line=0, m=0, n=0
  5. setlocal enabledelayedexpansion
  6. for /f "usebackq delims=" %%a in (!file!) do (
  7.   set /a line+=1, m=line%%2, n+=m
  8.   if !m!==0 (set last=%%a) else (echo !last!&echo %%a)>"!dpn!__!n!!x!"
  9. )
  10. if !m!==0 echo !last!>"!dpn!__!n!!x!"
复制代码

[ 本帖最后由 tireless 于 2009-7-30 01:45 编辑 ]
发表于 2009-7-30 00:51:12 | 显示全部楼层
能否在顶楼注明文件的体积有多大?
因为几十KB的文件和几十MB的文件,可能要采用不同的方案来解决。
 楼主| 发表于 2009-7-30 08:54:21 | 显示全部楼层
原帖由 Batcher 于 2009-7-30 00:51 发表
能否在顶楼注明文件的体积有多大?
因为几十KB的文件和几十MB的文件,可能要采用不同的方案来解决。

谢谢,文件一般是8M到10M左右,采用每N行分割,N可以自己设置,或者我自己改批理也可以,比如共10000行,每100行分割,自动生成10个文本文件
发表于 2009-7-30 13:02:38 | 显示全部楼层
分割 Test.txt,每份 100 行,文件名是 Test_aa、Test_ab、Test_ac ...:
  1. split.exe -l 100 Test.txt Test_
复制代码
发表于 2009-7-30 13:40:00 | 显示全部楼层
  1. @echo off
  2. set file="Test.txt"
  3. set per=100

  4. for %%a in (%file%) do set "dpn=%%~dpna" & set "x=%%~xa"
  5. set /a count=per-1, n=0
  6. setlocal enabledelayedexpansion
  7. for /f "usebackq delims=" %%a in (!file!) do (
  8.   set /a count+=1, n=count/per
  9.   echo %%a>>"!dpn!__!n!!x!"
  10. )
复制代码

[ 本帖最后由 tireless 于 2009-7-30 13:55 编辑 ]

评分

参与人数 1PB +5 技术 +1 收起 理由
CrLf + 5 + 1 乐于助人,而且思路很棒~

查看全部评分

发表于 2011-3-8 14:16:51 | 显示全部楼层
楼上厉害, 学习了。以后多来看看。
发表于 2011-10-9 01:05:43 | 显示全部楼层
六楼是我要的结果。赞一个。
发表于 2011-10-9 17:19:57 | 显示全部楼层
  1. @echo off&setlocal enabledelayedexpansion
  2. set /a 行数=10
  3. set filename=a.txt
  4. for %%z in ("%filename%") do (
  5.    for /f %%a in ('find /c /v ""^<%%z') do (
  6.       for /l %%b in (1 %行数% %%a) do (
  7.          for /l %%c in (1 1 10) do (
  8.             set str=
  9.             set /p str=
  10.             echo !str!
  11.          )
  12.       )>%%~nz%%b%%~xz
  13.    )<%%z
  14. )
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 02:31 , Processed in 0.031918 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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