Blockieren der VBScript CopyHere-Funktion

Blockieren der VBScript CopyHere-Funktion

Ich habe ein Skript zum Extrahieren des Inhalts eines ZIP-Ordners, das nicht funktioniert (Code unten im Beitrag, als Referenz). Ich erstelle einen Zielordner, falls er nicht existiert, und verwende dann CopyHere, um den Inhalt in den Zielordner zu verschieben. Das Skript wird bis zu dem Punkt ausgeführt, an dem es einen Ordner erstellt, und scheint dann während der CopyHere-Funktion ins Stocken zu geraten (es wird nie etwas aus der ZIP-Datei verschoben). Beachten Sie, dass der Windows Based Script Host-Prozess an diesem Punkt auf unbestimmte Zeit ausgeführt wird und ich ihn manuell beenden muss.

Es scheint ein spezifisches Problem mit meinem Computer zu sein, da das Skript sowohl in einer virtuellen Maschine von mir als auch auf den Computern anderer Kollegen (alle x64 Windows 10 Professional) ausgeführt wird.

Ich habe volle Berechtigungen für den Speicherort, an den ich extrahieren möchte, daher glaube ich nicht, dass es sich um ein Berechtigungsproblem handelt. Der einzige Unterschied zwischen den Maschinen, der mir einfällt, ist, dass ich die Ubuntu-in-Windows-Funktion zum Ausprobieren installiert habe. Vielleicht verursacht das ein Problem?

Welche weiteren Schritte kann ich unternehmen, um herauszufinden, warum der Prozess ins Stocken gerät?

Danke!

-Sean

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

Antwort1

CopyHerenutzt die 256Option, dieDisplay a progress dialog box but do not show the file names.
Quelle

Ist es möglich, dass Sie eine Eingabeaufforderung erhalten, die Sie nicht sehen? Führen Sie das Skript mit wscript.exeoder aus cscript.exe? Führen Sie es interaktiv aus?

Können Sie mit der Option versuchen 4, keinen Fortschrittsdialog anzuzeigen? Sie können auch versuchen, 16+256was hinzufügen würdeRespond with "Yes to All" for any dialog box that is displayed.

Ich habe das Skript auch ausgeführt und es funktioniert einwandfrei, aber als ich es erneut ausführte, wurde ich aufgefordert, vorhandene Dateien zu überschreiben.

verwandte Informationen