VBScript CopyHere 函数停滞

VBScript CopyHere 函数停滞

我有一个脚本用于提取 .zip 文件夹的内容,但它不起作用(代码位于文章底部,供参考)。如果目标文件夹不存在,我会创建一个目标文件夹,然后使用 CopyHere 将内容移动到目标文件夹。脚本运行到创建文件夹的阶段,然后在 CopyHere 函数期间似乎停滞(zip 文件中没有任何内容被移动)。请注意,此时基于 Windows 的脚本宿主进程正在无限期运行,我必须手动终止它。

这似乎是我的计算机上特有的东西,因为该脚本在我的虚拟机以及其他同事的机器(所有 x64 Windows 10 Professional)中运行。

我在尝试提取到的位置拥有完全权限,因此我认为这不是权限问题。我能想到的机器之间的唯一区别是我安装了 Ubuntu-in-Windows 功能来试用。也许这导致了问题?

我还可以采取哪些步骤来查明该过程停滞的原因?

谢谢!

-肖恩

Function unzip(sZip)

    Dim oFSO, oShell
    dim zip, d

    Set oFSO = CreateObject("Scripting.FileSystemObject")

    sZipFile = oFSO.GetAbsolutePathName(sZip)
    sDestPath = oFSO.GetAbsolutePathName(Left(sZip, Len(sZip) - 4))

    If Not oFSO.FolderExists(sDestPath) Then
        oFSO.CreateFolder(sDestPath)
    End If

    Set oShell = CreateObject("Shell.Application")
    Set zip = oShell.NameSpace(sZipFile)
    set d = oShell.NameSpace(sDestPath)

    MsgBox "Got here"

    d.CopyHere zip.items, 256

    Set oFSO = Nothing
    Set oShell = Nothing

End Function

Dim oFSO
Set oFSO = CreateObject("Scripting.FileSystemObject")

sPath = oFSO.GetParentFolderName(WScript.ScriptFullName)

sInstPath = sPath & "\dist\installers\"
aInsts = Array("4-AgilentIOLib.zip", "5-NationalInstrumentsLib.zip")

For i = 0 To UBound(aInsts)

    MsgBox "Unzipping " & sInstPath & aInsts(i)

    unzip(sInstPath & aInsts(i))

    MsgBox "Done"
Next

答案1

CopyHere正在使用该256选项,即Display a progress dialog box but do not show the file names.
来源

您是否可能收到了未看到的提示?您是否使用wscript.exe或运行脚本cscript.exe?您是否以交互方式运行脚本?

您能否尝试使用选项4,不显示进度对话框?您也可以尝试16+256添加Respond with "Yes to All" for any dialog box that is displayed.

我也运行了该脚本并且它运行良好,但是当我重新运行它时,系统提示我覆盖现有文件。

相关内容