[已解决] Dism命令释放wim用AU3如何显示实时进度条谢谢?
本帖最后由 令狐大虾 于 2023-4-20 00:45 编辑如题,懂得朋友帮忙一下。下面只会一个简单的,但是不完美
Run(@ComSpec & ' /c ' & ' @echo off&color 0e&echo 正在释放系统安装文件...请勿关闭此窗口&Dism /apply-image /imagefile:SystemFiles\64w10.wim /index:1 /ApplyDir:C:','',@SW_HIDE)
ProgressOn('', '')
For $i = 1 to 1000
Sleep(2000)
If Not ProcessExists('dism.exe') Then ExitLoop
ProgressSet($i,'安装中:'&$i&'%')
Next
ProgressSet(100 , '完成')
Sleep(500)
ProgressOff()下面这个代码是问人家的,但是不会怎么添加进度条进去啊,大伙帮帮忙啊
#include <Constants.au3>
Local $p = Run(@ComSpec & " /c Dism /apply-image /imagefile:64w7.wim /index:1 /ApplyDir:7","",@SW_HIDE,15)
Local $line
While 1
$line = StdoutRead($p)
If @error Then ExitLoop
;正则取回显,进度条控件
Wend
楼主看下帮助中StdoutRead的用法,是可以读取到dism的进度的。
只是在我这里dism工作并不稳定,后来我就用第三方工具wimlib,获取进度的方法一样为使用StdoutRead bfgxp 发表于 2023-3-30 11:13
楼主看下帮助中StdoutRead的用法,是可以读取到dism的进度的。
只是在我这里dism工作并不稳定,后来我就 ...
谢谢,基础差,可否发个例子啊 令狐大虾 发表于 2023-4-3 23:06
谢谢,基础差,可否发个例子啊
au3的好处就是帮助文件中对每一个函数都有示例,直接看帮助吧 本帖最后由 令狐大虾 于 2023-4-19 01:12 编辑
bfgxp 发表于 2023-3-30 11:13
楼主看下帮助中StdoutRead的用法,是可以读取到dism的进度的。
只是在我这里dism工作并不稳定,后来我就 ...帮忙帮我把这个完善一下啊谢谢
#include <Constants.au3>
Local $p = Run(@ComSpec & " /c Dism /apply-image /imagefile:64w7.wim /index:1 /ApplyDir:7","",@SW_HIDE,15)
Local $line
While 1
$line = StdoutRead($p)
If @error Then ExitLoop
;正则取回显,修改进度条控件
<p style="line-height: 30px; text-indent: 2em;"></p>Wend Func _dismA($imgFile, $idex, $target, $eftxt)
$DISMp = Run(@ComSpec & " /c " & 'Dism.exe /Apply-Image /ImageFile:"' & $imgFile & '" /index:' & $idex & ' /ApplyDir:' & $target, "", "", 2 + 4)
Dim $baifie = 0
While ProcessExists($DISMp)
$line = StdoutRead($DISMp, 5)
$bfb = StringRegExp($line, "\d+(?=\.\d\%)", 3)
If Not @error Then
If Int($bfb) > Int($baifie) Then $baifie = $bfb
EndIf
Sleep(500)
WEnd
EndFunc ;==>_dismA
页:
[1]