You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用VBScript等待文件解压完成后再启动安装程序

替换VBScript固定等待时长为解压完成后再启动程序的方案

原脚本通过固定时长等待解压完成,无法适配不同性能的电脑。我们可以通过循环检测目标文件是否存在且稳定的方式,替换掉固定sleep语句,确保解压完成后再启动程序。

修改后的完整脚本

ZipFile="PDMsetup.zip"
ExtractTo="."
 
Set fso = CreateObject("Scripting.FileSystemObject")
sourceFile = fso.GetAbsolutePathName(ZipFile)
destFolder = fso.GetAbsolutePathName(ExtractTo)
 
Set objShell = CreateObject("Shell.Application")
Set FilesInZip=objShell.NameSpace(sourceFile).Items()
objShell.NameSpace(destFolder).copyHere FilesInZip, 16
 
Set fso = Nothing
Set objShell = Nothing
Set FilesInZip = Nothing

' 替换原固定sleep,改为循环检测目标文件直到存在且稳定
Set objFSO = CreateObject("Scripting.FileSystemObject")
strPath = Wscript.ScriptFullName
Set objFile = objFSO.GetFile(strPath)
strFolder = objFSO.GetParentFolderName(objFile) 
targetExe = strFolder & "\Startwinstall.exe"

' 循环检测文件是否存在,同时验证文件大小稳定(避免解压中文件未写完)
Dim fileSize, prevSize
Do
    WScript.Sleep 1000 ' 每秒检查一次,可根据需求调整
    If objFSO.FileExists(targetExe) Then
        prevSize = objFSO.GetFile(targetExe).Size
        WScript.Sleep 500 ' 等待0.5秒再次检查大小
        fileSize = objFSO.GetFile(targetExe).Size
        If fileSize = prevSize Then Exit Do ' 大小稳定,说明解压完成
    End If
Loop

' 启动目标程序
Set objShell = CreateObject("Wscript.Shell")
objShell.Run targetExe

Set objFSO = Nothing
Set objShell = Nothing

关键修改说明

  • 删除原固定等待的wscript.sleep 480000语句
  • 添加循环检测逻辑:
    • 每秒检查一次Startwinstall.exe是否存在
    • 当文件存在时,对比两次间隔0.5秒的文件大小,确认大小稳定(避免解压过程中文件还在写入,导致启动失败)
    • 只有当文件存在且大小稳定时,才退出循环启动程序
  • 复用原脚本中获取目标文件路径的逻辑,减少冗余代码

内容的提问来源于stack exchange,提问作者C.R. Pynch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 20:05:36