找回密码
 加入
搜索
查看: 5126|回复: 6

[AU3基础] 文件打包问题【已解决】

  [复制链接]
发表于 2013-8-29 13:37:44 | 显示全部楼层 |阅读模式
本帖最后由 872777825 于 2013-8-30 15:36 编辑
Dim $afile [1],$num
Dim $MYCTRL[15]
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$MYGUI = GUICreate("", 620, 442, -1, -1)
$MYCTRL[1] = GUICtrlCreateLabel("选择文件夹所在路径:", 8, 112, 124, 17)
$MYCTRL[2] = GUICtrlCreateInput("", 128, 112, 345, 21)
$MYCTRL[3] = GUICtrlCreateButton("浏览", 480, 112, 57, 25)
$MYCTRL[4] = GUICtrlCreateButton("写入", 472, 368, 113, 41)
$MYCTRL[5] = GUICtrlCreateLabel("文件名", 16, 216, 76, 17)
$MYCTRL[6] = GUICtrlCreateInput("", 104, 208, 361, 21)

GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $MYCTRL[3]
                        Local $vardir = FileSelectFolder("请指定文件所在根目录","",1,"c:")
                        If $vardir <> "" Then
                                GUICtrlSetData($MYCTRL[2],$vardir)
                                Dim $arr = StringSplit($vardir,"")
                                GUICtrlSetData($MYCTRL[6],$arr[UBound($arr)-1])
                        EndIf        
                Case $MYCTRL[4]
                        writfile()
        EndSwitch
WEnd

Func writfile()
        $num = 0
        _filelist(GUICtrlRead($MYCTRL[2]))
        $temp = ""
        For $i=0 To UBound($afile)-1
                $temp &= $afile[$i]&@CRLF
        Next
        FileOpen("e:"&GUICtrlRead($MYCTRL[6])&".txt", 1)
        FileWrite("e:"&GUICtrlRead($MYCTRL[6])&".txt",$temp)
        FileClose("e:"&GUICtrlRead($MYCTRL[6])&".txt")
        Local $a = FileRead("e:"&GUICtrlRead($MYCTRL[6])&".txt"), $ss = ''
        $a = StringRegExp($a, '(?s).+(?=' & $ss & ')', 3)
        If Not @Error Then $a = StringRegExpReplace($a[0], @CRLF, '')
        $b = @extended
        For $i = 1 To $b - 1
                $redfile = FileReadLine("e:"&GUICtrlRead($MYCTRL[6])&".txt",$i)
                $wfile = FileOpen("e:\tt.txt", 1)
                $TE = "FILEINSTALL("""&$redfile&""")"
                FileWriteLine($wfile, $TE)
        Next
EndFunc

Func _filelist($searchdir)
        $search = FileFindFirstFile($searchdir & "\*")
        If $search = -1 Then Return -1 
        While 1
                $file = FileFindNextFile($search)
                If @error Then                
                                FileClose($search)
                                Return
                ElseIf $file = "." Or $file = ".." Then                
                                ContinueLoop
                ElseIf StringInStr(FileGetAttrib($searchdir & "" & $file), "D") Then                                         
                                _filelist($searchdir & "" & $file)
                                ContinueLoop
                EndIf              
                $afile [$num] = $searchdir & ""&$file
                $num += 1
                ReDim $afile [UBound($afile)+1]
        WEnd
EndFunc   ;==>_filelist
代码如上

小弟想法是这样的   想通过以上方式  指定某个目录后  点击写入可以在E盘的tt.txt文本下  按指定目录的目录结构写出所有文件跟文件夹的路径  
且以FILEINSTALL的方式表达  现在是前面这段写出来了   但后面这段不知道如何表达
如图




问题:

1,画着横线箭头的路径,  如何获得前面 E:\test 路径后的后半段路径写在后面的 C:\TEST2后面
2,fileinstall 需要释放的文件要所在路径下存在改目录才可以成功释放, 那如果目录不存在的时候如何处理
   知道 用DirCreate可以创建目录   但E:\test目录是通过自定义指定的  随时都可以改变  所以不能直接来做判断




不知道以上表达各位是否能看得明白  如果不清楚  欢迎交流

同时希望各位老大抽点时间帮小弟出点主意  在此先谢过

这个问题我不知道属于什么问题  所以不知道如何表达帖子标题   希望各位老大高台贵手  暂时不要删除帖子  或者给个方法怎么提出这个问题  麻烦了


答案在  4 楼

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2013-8-29 14:12:28 | 显示全部楼层
没人帮助我么  
发表于 2013-8-29 15:01:37 | 显示全部楼层
很疼疼的问题~留给别人回答吧~
发表于 2013-8-29 22:44:59 | 显示全部楼层
发表于 2013-8-30 09:12:51 | 显示全部楼层
楼上的UDF我喜欢
 楼主| 发表于 2013-8-30 15:35:03 | 显示全部楼层
回复 4# afan


    谢谢 afan 老大的指点 问题解决了  谢谢
发表于 2014-4-10 16:55:24 | 显示全部楼层
赞一个
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-28 11:16 , Processed in 0.086119 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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