找回密码
 加入
搜索
查看: 9924|回复: 22

请教如何批量输出txt文件并且更改文件类型??

 火.. [复制链接]
发表于 2010-2-5 15:22:49 | 显示全部楼层 |阅读模式
我想要批量输出一些文件,

比如说:
写入txt文件 aaa1
                  bbb1
                  ccc 1
                 .......
                 ggg1
然后自动保存为文件1.txt,并且自动更改文件类型为.vcf

同理,第二个写入txt文件就是
                 aaa2
                 bbb2
                 ccc2
                 .......
                 ggg2
然后自动保存为文件2.txt,并且自动更改文件类型为.vcf

向大家求教应该怎样处理这个问题,谢谢!
发表于 2010-2-5 15:28:13 | 显示全部楼层
回复 1# xavier880819
$Str = 'aaa' & @CRLF & 'bbb' & @CRLF & 'ccc' & @CRLF & '...' & @CRLF & 'ggg'
FileWrite('1.vcf', $Str)
 楼主| 发表于 2010-2-5 15:44:10 | 显示全部楼层
回复 2# afan


但是我要批量输出很多个啊,比如说500个,这个怎么能够做到输出500个呢??
发表于 2010-2-5 15:46:59 | 显示全部楼层
本帖最后由 afan 于 2010-2-5 15:48 编辑

回复 3# xavier880819


    不会吧,按你的需要循环不就行了
For $i = 1 to 500
        FileWrite($i & '.vcf', $i)
Next
 楼主| 发表于 2010-2-5 16:06:20 | 显示全部楼层
回复 4# afan


   恩,这样的确可以,但是这样一来文件1和2里面的东西不就是一样的了??

   我是需要1和2里面的东西有点区别才行啊, 比如1里面是aaa1,bbb1,ccc1.  那么2里面就是aaa2,bbb2,ccc2才对啊
发表于 2010-2-5 16:09:16 | 显示全部楼层
回复 5# xavier880819


    里面的东东现在不就不一样吗?用记事本打开看看
1.vcf = 1, 2.vcf = 2,.... 500.vcf = 500
 楼主| 发表于 2010-2-5 16:17:49 | 显示全部楼层
回复 6# afan

恩,现在一样了,刚刚的确是我写得有点问题,谢谢你的帮忙
发表于 2010-2-5 16:31:27 | 显示全部楼层
Global $StartChar="a"   ;开始的字符
Global $EndChar="g"      ;结束的字符
Global $StringLen=6     ;每个字符串的字符个数
Global $AllFileNum=500   ;总共要生成多少个文件

for $HouZhui=1 to $AllFileNum Step 1    ;总共生成多少个文件循环多少次
        For $Char=Asc($StartChar) To Asc($EndChar) Step 1   ;按开始和结束字符ASC码差值循环。
                Dim $String=""    ;字符中间变量。存储生成的中间字符串
                For $i=1 To $StringLen Step 1   ;按字符串长度循环
                        $String=$String&Chr($Char)   ;将单个的字符组合成字符串
                Next
                $String=$String&$HouZhui     ;字符串重组。  
                FileWriteLine($HouZhui&".vcf",$String&@CRLF)  ; 写入文件       
        Next
Next

给你个代码。 自己测试了。 很好用。

评分

参与人数 1金钱 +20 贡献 +1 收起 理由
afan + 20 + 1

查看全部评分

发表于 2010-2-5 16:34:24 | 显示全部楼层
2--3秒可生成500个文件。 完全按你的要求。呵呵
aaaaaa1
bbbbbb1
cccccc1
dddddd1
eeeeee1
ffffff1
gggggg1



aaaaaa500
bbbbbb500
cccccc500
dddddd500
eeeeee500
ffffff500
gggggg500
发表于 2010-2-5 16:50:25 | 显示全部楼层
哦,原来for...next是这样用的
发表于 2010-2-5 18:09:44 | 显示全部楼层
刚回复完, 突然想到了以前那谁说的。 频繁操作IO会影响程序运行时间。 所以。。 又优化了下代码。。
如下:

Global $StartChar="a"   ;开始的字符
Global $EndChar="g"      ;结束的字符
Global $StringLen=6     ;每个字符串的字符个数
Global $AllFileNum=500   ;总共要生成多少个文件

for $HouZhui=1 to $AllFileNum Step 1    ;总共生成多少个文件循环多少次
        Dim $String=""    ;字符中间变量。存储生成的中间字符串
        For $Char=Asc($StartChar) To Asc($EndChar) Step 1   ;按开始和结束字符ASC码差值循环。
                For $i=1 To $StringLen Step 1   ;按字符串长度循环
                        $String=$String&Chr($Char)   ;将单个的字符组合成字符串
                Next
                $String=$String&$HouZhui&@CRLF     ;字符串重组。  
        Next
        FileWriteLine($HouZhui&".vcf",$String)  ; 写入文件
Next

生成完一个文件需要的信息之后,才写入。
发表于 2010-2-6 15:46:42 | 显示全部楼层
强悍  学习收藏 备用
 楼主| 发表于 2010-2-8 11:24:55 | 显示全部楼层
谢谢各位的帮助,真的很有用,但是我现在碰到另外一个问题
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <ProgressConstants.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <TreeViewConstants.au3>
#include <File.au3>
#NoTrayIcon

Opt('MustDeclareVars', 1)

GUICreate('vcfCard creator v1.00.01', 280, 150, -1, -1)

Dim $p, $Button, $Button2, $nMsg,$i,$Str

$p = GUICtrlCreateInput("0", 50, 35, 140, 20)
$Button = GUICtrlCreateButton("Generate Contacts", 50, 80, 140, 20)
$Button2 = HotKeySet("{ESC}","Terminate")

GUISetState()
While 1
     $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                                Case $Button2
                                                Terminate()
                                Case $Button
                                        Create()
                                EndSwitch
WEnd

Func Terminate()
                    Exit 0
EndFunc   ;==>Terminate

Func Create()
                For $i = 1 to $p
$Str = 'a' & $i & @CRLF & 'b'& $i & @CRLF & 'c' & $i & @CRLF & '...' & @CRLF & 'ggg' & $i
        FileWrite('Contact'& $i & '.txt', $Str)
        Next        
        EndFunc
为什么我定义的input不能起作用呢??
 楼主| 发表于 2010-2-8 11:27:01 | 显示全部楼层
无论我在input box输入数字多少,创建出来的都是3个文件
发表于 2010-2-8 11:55:21 | 显示全部楼层
$p = GUICtrlCreateInput("0", 50, 35, 140, 20)

这句的意思你都没弄明白。。

这句的意思是创建一个INPUT框,返回的是一个控件ID. 你用控件ID来控制循环,,, 没搞错吧。。

应该是先读取INPUT框中的信息。然后才使用。。。

如:

$p = GUICtrlCreateInput("Input1", 72, 88, 353, 21)
…………………………
$InputNum=GUICtrlRead($p)
for $i=1 to $InputNum step 1
   ……
next
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-22 11:43 , Processed in 0.085720 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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