872777825 发表于 2013-8-29 13:37:44

文件打包问题【已解决】

本帖最后由 872777825 于 2013-8-30 15:36 编辑


Dim $afile ,$num
Dim $MYCTRL
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$MYGUI = GUICreate("", 620, 442, -1, -1)
$MYCTRL = GUICtrlCreateLabel("选择文件夹所在路径:", 8, 112, 124, 17)
$MYCTRL = GUICtrlCreateInput("", 128, 112, 345, 21)
$MYCTRL = GUICtrlCreateButton("浏览", 480, 112, 57, 25)
$MYCTRL = GUICtrlCreateButton("写入", 472, 368, 113, 41)
$MYCTRL = GUICtrlCreateLabel("文件名", 16, 216, 76, 17)
$MYCTRL = 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
                        Local $vardir = FileSelectFolder("请指定文件所在根目录","",1,"c:\")
                        If $vardir <> "" Then
                                GUICtrlSetData($MYCTRL,$vardir)
                                Dim $arr = StringSplit($vardir,"\")
                                GUICtrlSetData($MYCTRL,$arr)
                        EndIf       
                Case $MYCTRL
                        writfile()
        EndSwitch
WEnd

Func writfile()
        $num = 0
        _filelist(GUICtrlRead($MYCTRL))
        $temp = ""
        For $i=0 To UBound($afile)-1
                $temp &= $afile[$i]&@CRLF
        Next
        FileOpen("e:\"&GUICtrlRead($MYCTRL)&".txt", 1)
        FileWrite("e:\"&GUICtrlRead($MYCTRL)&".txt",$temp)
        FileClose("e:\"&GUICtrlRead($MYCTRL)&".txt")
        Local $a = FileRead("e:\"&GUICtrlRead($MYCTRL)&".txt"), $ss = ''
        $a = StringRegExp($a, '(?s).+(?=' & $ss & ')', 3)
        If Not @Error Then $a = StringRegExpReplace($a, @CRLF, '')
        $b = @extended
        For $i = 1 To $b - 1
                $redfile = FileReadLine("e:\"&GUICtrlRead($MYCTRL)&".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
        WEnd
EndFunc   ;==>_filelist代码如上

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




问题:

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




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

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

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


答案在4 楼

872777825 发表于 2013-8-29 14:12:28

没人帮助我么{:face (319):}

haijie1223 发表于 2013-8-29 15:01:37

很疼疼的问题~留给别人回答吧~

afan 发表于 2013-8-29 22:44:59

类似? http://www.autoitx.com/thread-9210-1-1.html

拉风晓晓 发表于 2013-8-30 09:12:51

楼上的UDF我喜欢

872777825 发表于 2013-8-30 15:35:03

回复 4# afan


    谢谢 afan 老大的指点 问题解决了谢谢

kevin0199 发表于 2014-4-10 16:55:24

赞一个{:face (125):}
页: [1]
查看完整版本: 文件打包问题【已解决】