ChengXin 发表于 2023-5-21 12:25:08

用stdoutread读取7z.exe压缩文件的进度,显示为空白?求大神支招

单独在cmd.exe里面运行能看到整个的进度,用run后就不显示,参数改为@sw_show后发现运行的窗口只有一个光标在闪烁,更改了工作目录也是一样的情况。

ChengXin 发表于 2023-5-21 12:38:04

                TraySetToolTip("正在创建压缩档案:" & $cArchives)
                Local $sOutput, $findPercent, $iProgPercent
                Local $iPID = Run($sCmdp, @ScriptDir, @SW_SHOW, $STDOUT_CHILD)

                ProgressOn($cTitle, "", "", -1, 1, $DLG_MOVEABLE)
                While 1
                        $sOutput = StdoutRead($iPID)
                        If @error Then ExitLoop
                        If $sOutput <> "" Then
                                $findPercent = StringInStr($sOutput, '%')
                                If $findPercent And StringInStr($sOutput, '+') Then
                                        $iProgPercent = Number(StringLeft($sOutput, $findPercent - 1))
                                        ProgressSet($iProgPercent, "", "Compressing...")
                                EndIf
                        EndIf
                WEnd
                ProgressOff()

afan 发表于 2023-5-21 16:30:27

参数问题吧~ 代码不完整,没见你的调用7z命令行代码。

ChengXin 发表于 2023-5-21 16:45:33

7z.exe a %USERPROFILE%\Desktop\test.7z D:\test.exe -mx9 -ms=200m -mf -mhc -mhcf -m0=LZMA2 -mmt

ChengXin 发表于 2023-5-21 16:47:16

afan 发表于 2023-5-21 16:30
参数问题吧~ 代码不完整,没见你的调用7z命令行代码。

以上这个命令行直接运行是显示整个过程的,如果通过run调用就只显示一个光标了,不知道是什么情况?

afan 发表于 2023-5-21 17:01:05

ChengXin 发表于 2023-5-21 16:47
以上这个命令行直接运行是显示整个过程的,如果通过run调用就只显示一个光标了,不知道是什么情况?

缺少bs流输出参数,添加 -bsp1 试试

ChengXin 发表于 2023-5-21 19:56:00

afan 发表于 2023-5-21 17:01
缺少bs流输出参数,添加 -bsp1 试试

好的,感谢大神!我试试先

ChengXin 发表于 2023-5-21 23:41:44

afan 发表于 2023-5-21 17:01
缺少bs流输出参数,添加 -bsp1 试试

完美解决,谢谢!

风过无痕 发表于 2023-5-22 08:23:47

7z有现成的udf为啥还要另外用7z.exe呢?建议看看udf
页: [1]
查看完整版本: 用stdoutread读取7z.exe压缩文件的进度,显示为空白?求大神支招