ndyzx 发表于 2012-9-9 21:26:55

求助,DOS回显可以进度条不行请帮助

本帖最后由 ndyzx 于 2012-9-9 21:29 编辑

比如运行一个文件BAT文件(仅举例)内容如下:@echo off
color 0a
title windows7系统垃圾清理---
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
echo ★☆ 恭喜您!清理全部完成!☆★
echo.
AU3脚本如下:#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
#Region ### START Koda GUI section ### Form=

$Form = GUICreate("进度条加回显", 427, 396)
$Progress = GUICtrlCreateProgress(6, 72, 425, 25,0x01)
$Label6_3 = GUICtrlCreateLabel("", 135, 40, 290, 17)
$Edit1 = GUICtrlCreateEdit("", 8, 152, 425, 193,BitOR(0x00200000,0x0800))
GUISetState(@SW_SHOW)
GUICtrlSetData($Label6_3,"进度条...")
        GUICtrlSetData($Edit1,"回显...",' ')
        $ImageX = Run('qll.bat',"", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
        While 1
                $line = StdoutRead($ImageX)
                If @error Then ExitLoop
                Dim $ProgressA,$ProgressB,$ImageXProgress
                If StringStripWS($line,8)<>"" Then
                        GUICtrlSetData($Edit1,@CRLF&$line,' ')
                        If StringInStr(StringStripCR($line),"Applying progress") Then
                                $ProgressA=StringSplit(StringStripCR($line),"]")
                                $ProgressB=StringSplit($ProgressA,"[")
                                $ImageXProgress=StringStripCR(StringStripWS($ProgressB,8))
                        EndIf
                        GUICtrlSetData($Label6_3,"正在执行..."& $ImageXProgress)
                        GUICtrlSetData($Progress,StringTrimRight($ImageXProgress,1))
                EndIf
       
        WEnd运行结果可以实时回显,但进度条没反应。请多指教。
页: [1]
查看完整版本: 求助,DOS回显可以进度条不行请帮助