Eu tenho um script para extrair o conteúdo de uma pasta .zip que não está funcionando (código no final da postagem, para referência). Eu crio uma pasta de destino, se ela não existir, e uso CopyHere para mover o conteúdo para a pasta de destino. O script é executado até o ponto em que cria uma pasta e parece travar durante a função CopyHere (nada é movido do arquivo zip). Observe que o processo do Windows Based Script Host está em execução indefinidamente neste momento e preciso encerrá-lo manualmente.
Parece ser algo específico da minha máquina, pois o script roda em uma máquina virtual que possuo, assim como nas máquinas de outros colegas de trabalho (todas x64 Windows 10 Professional).
Tenho privilégios totais no local para o qual estou tentando extrair, então não acredito que seja um problema de permissão. A única diferença entre as máquinas que consigo imaginar é que instalei o recurso Ubuntu-in-Windows para brincar. Talvez isso esteja causando um problema?
Que outras etapas posso seguir para descobrir por que o processo está paralisado?
Obrigado!
-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
Responder1
CopyHere
está usando a 256
opção, que éDisplay a progress dialog box but do not show the file names.
fonte
É possível que você esteja recebendo um aviso que não está vendo? Você está executando o script com wscript.exe
ou cscript.exe
? Você está executando isso de forma interativa?
Você pode tentar com a opção 4
não exibir uma caixa de diálogo de progresso? Você também pode tentar 16+256
o que adicionariaRespond with "Yes to All" for any dialog box that is displayed.
Também executei o script e ele funcionou bem, mas quando o executei novamente, fui solicitado a substituir os arquivos existentes.