Функция CopyHere VBScript останавливается

Функция CopyHere VBScript останавливается

У меня есть скрипт для извлечения содержимого .zip-папки, который не работает (код внизу поста, для справки). Я создаю папку назначения, если она не существует, затем использую CopyHere для перемещения содержимого в папку назначения. Скрипт выполняется до точки, где он создает папку, затем, по-видимому, останавливается во время функции CopyHere (ничего не перемещается из zip-файла). Обратите внимание, что процесс Windows Based Script Host на данный момент выполняется бесконечно, и мне приходится вручную завершать его.

Похоже, проблема связана с моей машиной, поскольку скрипт запускается на моей виртуальной машине, а также на машинах других коллег (все 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.

Я также запустил скрипт, и он работает нормально, но когда я запустил его повторно, мне было предложено перезаписать существующие файлы.

Связанный контент