找回密码
 加入
搜索
查看: 2942|回复: 2

[AU3基础] 请教关于回显及WHILE问题

[复制链接]
发表于 2012-9-15 02:18:39 | 显示全部楼层 |阅读模式
本帖最后由 ndyzx 于 2012-9-15 02:20 编辑

弄了好久解决不了。来请教高人。
如下本想点按钮1获得输入框内容后,给点按钮2后运行的文件赋参数并运行(本举例为简单点,例中脚本没有赋参数值,只举列运行一个BAT文件)。
   问题来了:如果点按钮1后再点按钮2,BAT文件不运行;如果不点按钮1,直接点按钮2则会运行BAT文件并回显。请大家指教。
V.BAT文件
@echo off
echo 欢迎使用由冰剑修改制作的清除系统垃圾文件批处理小程序    
 
echo 清理垃圾文件,速度由电脑文件大小而定。在没看到结尾信息时 
 
echo 请勿关闭本窗口。 感谢灵感小菜提供源程序
 
echo.
 
echo 正在清除系统垃圾文件,请稍后......
 
echo 删除补丁备份目录
RD %windir%\$hf_mig$ /Q /S
 
echo 把补丁卸载文件夹的名字保存成2950800.txt
dir %windir%\$NtUninstall* /a:d /b >%windir%\2950800.txt
 
echo 从2950800.txt中读取文件夹列表并且删除文件夹
for /f %%i in (%windir%\2950800.txt) do rd %windir%\%%i /s /q
 
echo 删除2950800.txt
del %windir%\2950800.txt /f /q
 
echo 删除补丁安装记录内容(下面的del /f /s /q %systemdrive%\*.log已经包含删除此类文件)
del %windir%\KB*.log /f /q
 
echo 删除系统盘目录下临时文件
del /f /s /q %systemdrive%\*.tmp
 
echo 删除系统盘目录下临时文件
del /f /s /q %systemdrive%\*._mp
 
echo 删除系统盘目录下日志文件
del /f /s /q %systemdrive%\*.log
 
echo 删除系统盘目录下GID文件(属于临时文件,具体作用不详)
del /f /s /q %systemdrive%\*.gid
 
echo 删除系统目录下scandisk(磁盘扫描)留下的无用文件
del /f /s /q %systemdrive%\*.chk
 
echo 删除系统目录下old文件
del /f /s /q %systemdrive%\*.old
 
echo 删除回收站的无用文件
del /f /s /q %systemdrive%\recycled\*.*
 
echo 删除系统目录下备份文件
del /f /s /q %windir%\*.bak
 
echo 删除应用程序临时文件
del /f /s /q %windir%\prefetch\*.*
 
echo 删除系统维护等操作产生的临时文件
rd /s /q %windir%\temp & md %windir%\temp
 
echo 删除当前用户的COOKIE(IE)
del /f /q %userprofile%\cookies\*.*
 
echo 删除internet临时文件
del /f /s /q "%userprofile%\local settings\temporary internet files\*.*"
 
echo 删除当前用户日常操作临时文件
del /f /s /q "%userprofile%\local settings\temp\*.*"
 
echo 删除访问记录(开始菜单中的文档里面的东西)
del /f /s /q "%userprofile%\recent\*.*"
 
echo.
AU3脚本
#include <Array.au3>
#include <Constants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 324, 167, 192, 124)
$Input1 = GUICtrlCreateInput("Input1", 24, 24, 153, 21)
$Button1 = GUICtrlCreateButton("Button1", 184, 24, 73, 25)
$Button2 = GUICtrlCreateButton("Button2", 184, 64, 73, 25)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button1
                        input()
                Case $Button2
                        aaa()
                        ExitLoop
        EndSwitch
WEnd
Func input()
        $wim = FileOpenDialog("请选择指定的可执行文件", "", "可执行文件(*.exe)|所有文件(*.*)", 1 + 2, "setup.exe")
        GUICtrlSetData($Input1, $wim)
EndFunc   ;==>input

Func aaa()
        $Form = GUICreate("安装", 324, 167, 192, 124)
        $ProButton2 = GUICtrlCreateEdit("", 1, 22, 407, 149, BitOR(0x00200000, 0x0800))
        GUISetState(@SW_SHOW)
        GUICtrlSetData($ProButton2, "安装进程...", ' ')
        $foo = Run('V.bat', "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
        While 1
                $linea = StdoutRead($foo)
                If @error Then ExitLoop
                Dim $ProgressA, $ProgressB, $ImageXProgress
                If StringStripWS($linea, 8) <> "" Then
                        GUICtrlSetData($ProButton2, @CRLF & $linea, ' ')
                        If StringInStr(StringStripCR($linea), "Applying progress") Then
                                $ProgressA = StringSplit(StringStripCR($linea), "]")
                                $ProgressB = StringSplit($ProgressA[1], "[")
                                $ImageXProgress = StringStripCR(StringStripWS($ProgressB[2], 8))
                        EndIf
                EndIf
        WEnd
EndFunc   ;==>aaa
.....有没有更好的回显方法?
 楼主| 发表于 2012-9-15 15:36:39 | 显示全部楼层
回复 1# ndyzx 有没人看看,我发现按钮1如果打开的文件与脚本文件在同一目录一切正常,如果试打开其它目录后,再点按钮2,则退出。奇怪。
发表于 2012-9-15 17:27:32 | 显示全部楼层
既然同目录下可以正常,那你试下设置工作目录
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-15 01:18 , Processed in 0.079078 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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