找回密码
 加入
搜索
查看: 5423|回复: 7

[AU3基础] 【已解决】怎么把一个记事本,分割成若干份?

  [复制链接]
发表于 2010-9-7 11:14:23 | 显示全部楼层 |阅读模式
本帖最后由 .個朲綉√ 于 2010-9-8 10:51 编辑

打个比方,我记事本中有100万行内容。
我想5万行分成一个记事本,分成20个记事本。
请问这个该怎么操作?我现在没有一点头绪,不知道用到什么代码。
先谢过各位了。

下面是我做的一个代码,不知道哪里出错了,老是搞不定,我要把一个记事本,里面有1万行,我要分成10个记事本文件。每份1000行。
各位帮我想想办法,谢谢。
#include <file.au3>
Dim $aRecords
$sResultFile = 'Result.txt'
If Not _FileReadToArray("a.txt",$aRecords) Then
MsgBox(4096,"Error", " error:" & @error)
Exit
EndIf

$i = $aRecords[0]
$r = 1
While $i <= $js
        $i = $i / $js
For $x = $r to $i
Next
        $r = $i
FileWrite($sResultFile,$aRecords[$x] & @CRLF)
WEnd

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2010-9-7 13:44:05 | 显示全部楼层
用由1循环到5万用用:FileReadLine ( "文件句柄/文件名" [, 行号] )读,然后用:FileWriteLine ( "文件句柄/文件名", "数据" )写入到另一个记事本。。。
应很好弄吧?
 楼主| 发表于 2010-9-7 13:59:47 | 显示全部楼层
本帖最后由 .個朲綉√ 于 2010-9-7 14:03 编辑

这种方法我也想过,会不会很慢哦。。。
而且我是一直要写下去,比如把1~5万写进一个文件中,5万01~10万写进另一个文件中。
发表于 2010-9-7 15:51:22 | 显示全部楼层
回复 1# .個朲綉√
看看这段代码,应该对你有用!
#include<file.au3>
#include<array.au3>
Dim $file="D:\zgk_2010\autoit\excises\计算机精髓.txt"
;读取文本文件的没50行生成1个新文件
dim $aArray
_filereadtoarray($file, $aArray)
for $i = 1 to Ceiling($aArray[0]/50) 
   _FileWriteFromArray($aArray[50 *($i-1)+1] & '.txt', $aArray , 50 *($i-1)+1 , 50*$i)
next

评分

参与人数 1金钱 +15 收起 理由
.個朲綉√ + 15 太谢谢您的帮助了。

查看全部评分

 楼主| 发表于 2010-9-7 16:08:27 | 显示全部楼层
回复 4# newuser

太牛了,能解释一下_FileWriteFromArray,帮助里看不懂。
发表于 2010-9-7 18:14:23 | 显示全部楼层
收藏一下。
 楼主| 发表于 2010-9-7 23:07:17 | 显示全部楼层
本帖最后由 .個朲綉√ 于 2010-9-8 10:52 编辑

自己修改后的源码也共享上来吧,方便后人。。。
吃水不忘挖井人啊。。。
#NoTrayIcon
#include<file.au3>
#include<array.au3>
Dim $file = FileOpenDialog("选择Txt文件",@ScriptDir & "\","Txt文件 (*.txt)",1)
If @error Then
Exit
EndIf
dim $aArray
$No = InputBox("提示","请问一个文件要多少行号码?" & @CRLF & @CRLF & "例如:每份5万,输入50000" & @CRLF & @CRLF & "注意:" & @CRLF & "输入的数字不能大于被分割文件的行数。",30000)
If @error Then
Exit
EndIf
_filereadtoarray($file, $aArray)
for $i = 1 to Ceiling($aArray[0]/$No)
   _FileWriteFromArray($aArray[$No *($i-1)+1] & '.txt', $aArray , $No *($i-1)+1 , $No*$i)
next

评分

参与人数 1金钱 +30 收起 理由
pusofalse + 30

查看全部评分

发表于 2010-11-17 10:10:06 | 显示全部楼层
比如说我一个文件有37M,约有90万行,我分的时候写50万行,结果只分手一个文件出来.
我要达到的效果是生成多个文件,如每一个文件50万行,每二个文件不足50万行,就以剩下的行数做为一个文件.
怎么弄?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-10-3 00:31 , Processed in 0.102856 second(s), 30 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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