找回密码
 加入
搜索
楼主: xavier880819

使用autoIT调用bat文件的问题

[复制链接]
发表于 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前辈真的太谦虚了,这么厉害还称自己是新手,简直让我们这些新人无地自容啊!
真正的高手都这么低调。
今后还请前辈多多指教啊!
 楼主| 发表于 2009-8-14 09:20:57 | 显示全部楼层
但是我的想法是,既然创建了那么多文件夹,文件夹总数总是一样的,如果一个个递减,是不是也可以表达删除的效果?只是不知道时间能不能同步。
发表于 2009-8-14 10:42:57 | 显示全部楼层
那你可以试试“一个个递减”啊
 楼主| 发表于 2009-8-14 11:22:13 | 显示全部楼层
94# afan


我试过了的,我尝试使用ywcc=ywcc-1. 但是,现在的问题是我的尝试不成功。就算是能够成功,我还担心时间能不能够和删除的时间同步的问题。
发表于 2009-8-14 12:00:47 | 显示全部楼层
ywcc=ywcc-1 这能行吗,这只是开始生成文件夹时传递的一个变量而已...
如果你实在要做这个进度,我看只能用 DirGetSize() 随时查看文件夹目前的数量。
发表于 2009-8-14 12:07:16 | 显示全部楼层
不过DirGetSize() 首次调用是需要一定时间的,自己衡量取舍吧
另外,建议不要做两个进度条,删除的进度就在原进度条逆行不更好
 楼主| 发表于 2009-8-14 13:38:19 | 显示全部楼层
97# 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
 楼主| 发表于 2009-8-14 14:45:59 | 显示全部楼层
99# 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
发表于 2009-8-14 20:13:39 | 显示全部楼层
这个多层文件夹生成工具不错!
 楼主| 发表于 2009-8-17 13:41:29 | 显示全部楼层
hi, afan这样确实已经很不错了。

还记得上次我问过你那个enable和disable的问题吗??我其实目的是想在每层后面都加一个enable和disable 的按钮,从而达到想在层复制文件和不想在哪层复制文件都可以在UI上面操作。
但是直接把button设置成enable或者disable好像不可以哦?
发表于 2009-8-17 13:46:54 | 显示全部楼层
不用加什么 ENABLE 开关,每层加个复选框>复制文件前面加个判断是否勾选>勾选就复制
 楼主| 发表于 2009-8-17 14:32:50 | 显示全部楼层
104# afan


这个主意也挺好,怎么弄呢??谢谢你!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-6-8 22:56 , Processed in 0.084441 second(s), 14 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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