У меня есть скрипт для извлечения содержимого .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.
Я также запустил скрипт, и он работает нормально, но когда я запустил его повторно, мне было предложено перезаписать существующие файлы.