标题: [文本处理] [已解决]批处理如何分割大文本到各个文件夹? [打印本页]
作者: daohe 时间: 2013-3-23 16:23 标题: [已解决]批处理如何分割大文本到各个文件夹?
所谓大文本是指: 有几万行的 txt文档。
需要进行如下处理:
从大文本 第一行开始,
每20行分割为一个txt文件, 取名从1.txt, 2.txt,3.txt....到46.txt, 并保存到1文件夹下
然后重复分割另一份的1.txt, 2.txt,到46.txt,保存到2文件夹下,3文件夹,4文件夹 。。。。, 直到把大文本全部分割完
我手头上已经有下面这个,平均分割大文本 到每个小文本文档,供参考- @echo off&setlocal enabledelayedexpansion
- set m=1
- for /f "delims=" %%i in (result.txt) do (
- set /a n+=1
- if !n! leq 20 echo %%i>>a_!m!.txt
- if !n! equ 20 set n=0&set /a m+=1
- )
- echo 终于搞定!
- pause>nul
复制代码
作者: apang 时间: 2013-3-23 18:18
本帖最后由 apang 于 2013-3-23 19:30 编辑
- @echo off&setlocal enabledelayedexpansion
- set /a s=1,m=1
- for /f "delims=" %%a in (a.txt) do (
- set /a "n+=1,1/(n-21)" 2>nul||set /a n=1,m+=1
- if !m!==47 set /a s+=1,m=1
- md !s! 2>nul
- echo,%%a>>!s!\!m!.txt
- )
- pause
复制代码
vbs,速度比bat快很多。实测10000行文本,vbs用时4秒5,bat用时12秒8- Set FSO = CreateObject("Scripting.FileSystemObject")
- Set File = FSO.OpenTextFile("a.txt",1)
- s = 1 : m = 1
- Do Until File.atEndOfStream
- Str = File.ReadLine
- n = n + 1
- If n = 21 Then m = m + 1 : n = 1
- If m = 47 Then s = s + 1 : m = 1
- If Not FSO.FolderExists(s) Then FSO.CreateFolder(s)
- FSO.OpenTextFile(s & "\" & m & ".txt",8,True).WriteLine Str
- Loop
-
- MsgBox "OK"
复制代码
作者: CrLf 时间: 2013-3-23 18:59
最长的单行大概有多长?
作者: apang 时间: 2013-3-23 23:30
本帖最后由 apang 于 2013-3-23 23:42 编辑
减少写文件次数,10000行的TXT文本,用时0.42秒- Set FSO = CreateObject("Scripting.FileSystemObject")
- Set File = FSO.OpenTextFile("a.txt",1)
- s = 1 : m = 1
-
- Do Until File.atEndOfStream
- n = n + 1
- Str = Str & File.ReadLine & vbCrLf
- If n = 20 Then
- If Not FSO.FolderExists(s) Then FSO.CreateFolder(s)
- FSO.OpenTextFile(s & "\" & m & ".txt",2,True).Write Str
- m = m + 1 : n = 0 : str = ""
- End If
- If m > 46 Then s = s + 1 : m = 1
- Loop
-
- If Str <> "" Then
- If Not FSO.FolderExists(s) Then FSO.CreateFolder(s)
- FSO.OpenTextFile(s & "\" & m & ".txt",2,True).Write Str
- End If
-
- MsgBox "OK"
复制代码
作者: daohe 时间: 2013-3-24 09:15
回复 2# apang
非常感谢, 可以使用。
作者: daohe 时间: 2013-3-24 09:15
回复 3# CrLf
文本一行有一百到几百个单词吧
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |