Board logo

标题: [文件操作] [已解决]BAT批处理如何将TXT文件分成每5000行一个小文件? [打印本页]

作者: DDDYJQ1    时间: 2014-3-28 16:07     标题: [已解决]BAT批处理如何将TXT文件分成每5000行一个小文件?

本帖最后由 DDDYJQ1 于 2014-3-29 09:42 编辑

请问如何将一个大的TXT文件分成每5000行一个小的TXT文件,最后一个不能超过5000行,先谢了
作者: Batcher    时间: 2014-3-28 17:10

# 批处理分割文本文件:按指定行数分割
http://bbs.bathome.net/thread-1181-1-1.html
http://bbs.bathome.net/thread-4440-1-1.html
http://bbs.bathome.net/thread-5380-1-1.html
http://bbs.bathome.net/thread-11549-1-1.html
http://bbs.bathome.net/thread-15394-1-1.html
http://bbs.bathome.net/thread-17363-1-1.html
http://bbs.bathome.net/thread-21506-1-1.html
http://bbs.bathome.net/thread-23199-1-1.html
http://bbs.bathome.net/thread-27116-1-1.html

# 批处理分割文本文件:按指定大小分割
http://bbs.bathome.net/thread-2104-1-1.html

# 批处理分割文本文件:按份数或大小分割
http://bbs.bathome.net/thread-7955-1-1.html
http://bbs.bathome.net/thread-10933-1-1.html
http://bbs.bathome.net/thread-14592-1-1.html

# 批处理分割文本文件:按行数或字数分割
http://bbs.bathome.net/thread-2822-1-1.html

# 批处理分割文本文件:按章节分割
http://bbs.bathome.net/thread-6323-1-1.html

# 批处理分割文本文件:按关键字分割
http://bbs.bathome.net/thread-25360-1-1.html
作者: 522235677    时间: 2014-3-28 17:19

  1. @echo off & setlocal enabledelayedexpansion
  2. set nname=1
  3. for /f "delims=" %%a in (test.txt) do (
  4. set /a n+=1
  5. set /a s=!n!%%5000
  6. if "!s!"=="0" set /a nname+=1
  7. echo %%a  >>test!nname!.txt
  8. )
复制代码

作者: xudaweb    时间: 2014-3-28 17:50

回复 3# 522235677


测试了一下这段代码,发现第一个文件总是少一个,没找出原因。。。
作者: 522235677    时间: 2014-3-28 18:08

本帖最后由 522235677 于 2014-3-28 18:24 编辑

回复 4# xudaweb
  1. @echo off & setlocal enabledelayedexpansion
  2. set nname=1
  3. for /f "delims=" %%a in (test.txt) do (
  4.         if !n! gtr 0 set /a s=!n!%%5000
  5.         if "!s!"=="0" set /a nname+=1
  6.         echo %%a  >>test!nname!.txt
  7. set /a n+=1
  8. )
复制代码
现在可以了
作者: DAIC    时间: 2014-3-28 20:07

回复 5# 522235677


    这样会导致行尾产生多余的空格吧
作者: DDDYJQ1    时间: 2014-3-28 21:35

对啊,这样会导致行尾产生多余的空格吧,文件变大了
作者: terse    时间: 2014-3-28 22:28

这样效率是否提高点
  1. @echo off & setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in (test.txt) do (
  3.         set /a"n=m/5000,m+=1"
  4.         >>test!n!.txt echo %%a
  5. )
复制代码

作者: DDDYJQ1    时间: 2014-3-29 09:43

谢了,就是这样子,太好了,




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2