令狐大虾 发表于 2023-3-28 22:33:26

[已解决] 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


bfgxp 发表于 2023-3-30 11:13:15

楼主看下帮助中StdoutRead的用法,是可以读取到dism的进度的。

只是在我这里dism工作并不稳定,后来我就用第三方工具wimlib,获取进度的方法一样为使用StdoutRead

令狐大虾 发表于 2023-4-3 23:06:32

bfgxp 发表于 2023-3-30 11:13
楼主看下帮助中StdoutRead的用法,是可以读取到dism的进度的。

只是在我这里dism工作并不稳定,后来我就 ...

谢谢,基础差,可否发个例子啊

bfgxp 发表于 2023-4-4 18:58:53

令狐大虾 发表于 2023-4-3 23:06
谢谢,基础差,可否发个例子啊

au3的好处就是帮助文件中对每一个函数都有示例,直接看帮助吧

令狐大虾 发表于 2023-4-19 01:08:59

本帖最后由 令狐大虾 于 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

bfgxp 发表于 2023-4-19 09:39:01

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]
查看完整版本: [已解决] Dism命令释放wim用AU3如何显示实时进度条谢谢?