afan 发表于 2009-8-13 20:22:06

删除你可是指定一个总目录删了,又不是一个个去删的,这就无法知道它删到多少了,也就无法计算进度了~
我看你的 del() 是删除所有 mp3-1 至 mp3-1000 的文件夹,最多能走进度的只能是计算有几个 mp3- ,然后删掉了一个就走 1/几个 ,如果有多个 mp3- 还好看点,如果只一个那就一下走到头了。。。

水木子 发表于 2009-8-13 22:09:59

本帖最后由 水木子 于 2009-8-13 22:11 编辑

afan前辈真的太谦虚了,这么厉害还称自己是新手,简直让我们这些新人无地自容啊!
真正的高手都这么低调。
今后还请前辈多多指教啊!

xavier880819 发表于 2009-8-14 09:20:57

但是我的想法是,既然创建了那么多文件夹,文件夹总数总是一样的,如果一个个递减,是不是也可以表达删除的效果?只是不知道时间能不能同步。

afan 发表于 2009-8-14 10:42:57

那你可以试试“一个个递减”啊

xavier880819 发表于 2009-8-14 11:22:13

94# afan


我试过了的,我尝试使用ywcc=ywcc-1. 但是,现在的问题是我的尝试不成功。就算是能够成功,我还担心时间能不能够和删除的时间同步的问题。

afan 发表于 2009-8-14 12:00:47

ywcc=ywcc-1 这能行吗,这只是开始生成文件夹时传递的一个变量而已...
如果你实在要做这个进度,我看只能用 DirGetSize() 随时查看文件夹目前的数量。

afan 发表于 2009-8-14 12:07:16

不过DirGetSize() 首次调用是需要一定时间的,自己衡量取舍吧
另外,建议不要做两个进度条,删除的进度就在原进度条逆行不更好

xavier880819 发表于 2009-8-14 13:38:19

97# afan


还能逆行??这么好的方法??怎么弄啊??能够逆行的话当然再多做一个要好很多啊!!

afan 发表于 2009-8-14 13:49:34

本帖最后由 afan 于 2009-8-14 14:02 编辑

例子:#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>

GUICreate("我的 GUI 进度条", 220, 100, 100, 200)
$progressbar2 = GUICtrlCreateProgress(10, 40, 200, 20, $PBS_SMOOTH)
GUICtrlSetData(-1, 100)
$button = GUICtrlCreateButton("开始倒退", 75, 70, 70, 20)
GUISetState()
$s = 0; progressbar-saveposition
Do
        $msg = GUIGetMsg()
        If $msg = $button Then
                For $i = $s To 100
                        $m = GUIGetMsg()
                        If $m = -3 Then ExitLoop
                        GUICtrlSetData($progressbar2, (100 - $i))
                        Sleep(20)
                Next
                Msgbox(0,0,'完成',2)
                GUICtrlSetData($progressbar2, 100)
        EndIf
Until $msg = $GUI_EVENT_CLOSE

xavier880819 发表于 2009-8-14 14:45:59

99# afan


谢谢afan,这样也挺好的,我去尝试一下

afan 发表于 2009-8-14 17:25:18

修改了几处,让删除时使原进度条依据第1层文件夹的数量逆行。                Case $Button1
                        $h = MsgBox(1 + 48, 'Attention', 'Are you sure you want to Delete all the folders ?')
                        Select
                                Case $h = 1
                                        Dim $jn = 1
                                        $gmld = GUICtrlRead($gml)
                                        If $gmld = '' Then $gmld = @ScriptDir
                                        Del()
                                        AdlibDisable()
                                        Sleep(300)
                                        MsgBox(64, 'Finish', 'You have deleted all the folders! ')
                                Case $h = 2
                                        ContinueLoop
                        EndSelect
Func Del()
        Dim $wjjzs = 0, $num = 1
        Do
                $wjjs = FileExists($gmld & '\' & 'MP3-' & $jn)
                If $wjjs = 0 Then ExitLoop
                $jn += 1
        Until $wjjs = 0
        $jn -= 1
        AdlibEnable("jdtj", 1000)
        Do
                If DirRemove($gmld & '\' & 'MP3-' & $num, 1) = 0 Then ExitLoop
                $num += 1
        Until 0
EndFunc   ;==>Del

Func jdtj()
        Dim $jn1 = $jn, $sys = 0
        Do
                $wjjs = FileExists($gmld & '\' & 'MP3-' & $jn1)
                If $wjjs = 0 Then ExitLoop
                $jn1 -= 1
                $sys += 1
        Until @error = 1
        GUICtrlSetData($jdt, $sys / $jn * 100)
        GUICtrlSetData($xs, $sys / $jn *$zs & '/' & $zs)
EndFunc   ;==>jdtj

hao1926 发表于 2009-8-14 20:13:39

这个多层文件夹生成工具不错!

xavier880819 发表于 2009-8-17 13:41:29

hi, afan这样确实已经很不错了。

还记得上次我问过你那个enable和disable的问题吗??我其实目的是想在每层后面都加一个enable和disable 的按钮,从而达到想在层复制文件和不想在哪层复制文件都可以在UI上面操作。
但是直接把button设置成enable或者disable好像不可以哦?

afan 发表于 2009-8-17 13:46:54

不用加什么 ENABLE 开关,每层加个复选框>复制文件前面加个判断是否勾选>勾选就复制

xavier880819 发表于 2009-8-17 14:32:50

104# afan


这个主意也挺好,怎么弄呢??谢谢你!
页: 1 2 3 4 5 6 [7] 8 9
查看完整版本: 使用autoIT调用bat文件的问题