本帖最后由 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
.....有没有更好的回显方法? |