xavier880819 发表于 2010-2-5 15:22:49

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

我想要批量输出一些文件,

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

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

向大家求教应该怎样处理这个问题,谢谢!

afan 发表于 2010-2-5 15:28:13

回复 1# xavier880819 $Str = 'aaa' & @CRLF & 'bbb' & @CRLF & 'ccc' & @CRLF & '...' & @CRLF & 'ggg'
FileWrite('1.vcf', $Str)

xavier880819 发表于 2010-2-5 15:44:10

回复 2# afan


但是我要批量输出很多个啊,比如说500个,这个怎么能够做到输出500个呢??

afan 发表于 2010-2-5 15:46:59

本帖最后由 afan 于 2010-2-5 15:48 编辑

回复 3# xavier880819


    不会吧,按你的需要循环不就行了For $i = 1 to 500
      FileWrite($i & '.vcf', $i)
Next

xavier880819 发表于 2010-2-5 16:06:20

回复 4# afan


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

   我是需要1和2里面的东西有点区别才行啊, 比如1里面是aaa1,bbb1,ccc1.那么2里面就是aaa2,bbb2,ccc2才对啊

afan 发表于 2010-2-5 16:09:16

回复 5# xavier880819


    里面的东东现在不就不一样吗?用记事本打开看看
1.vcf = 1, 2.vcf = 2,.... 500.vcf = 500

xavier880819 发表于 2010-2-5 16:17:49

回复 6# afan

恩,现在一样了,刚刚的确是我写得有点问题,谢谢你的帮忙:face (29):

lanfengc 发表于 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

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

lanfengc 发表于 2010-2-5 16:34:24

2--3秒可生成500个文件。 完全按你的要求。呵呵
aaaaaa1
bbbbbb1
cccccc1
dddddd1
eeeeee1
ffffff1
gggggg1



aaaaaa500
bbbbbb500
cccccc500
dddddd500
eeeeee500
ffffff500
gggggg500

catcher 发表于 2010-2-5 16:50:25

哦,原来for...next是这样用的

lanfengc 发表于 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

强悍学习收藏 备用

xavier880819 发表于 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不能起作用呢??

xavier880819 发表于 2010-2-8 11:27:01

无论我在input box输入数字多少,创建出来的都是3个文件

lanfengc 发表于 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
页: [1] 2
查看完整版本: 请教如何批量输出txt文件并且更改文件类型??