Descompactação do VBS - objeto requerido: 'objshell.NameSpace (…)'

0

Eu sei muito pouco sobre bash ou vbs. Eu estou tentando fazer um script que irá automaticamente descompactar um zip chamado 'dungeon.zip', que contém um pequeno jogo que eu programou. Eu quero descompactá-lo para uma pasta chamada dungeon no mesmo diretório que o arquivo zip estava dentro Eu usei o código de esta resposta e substituiu os arquivos pelos meus arquivos:

strZipFile  = "dungeon.zip"
strUnzipped = "dungeon\"

Sub UnZip(ExtractTo,ZipFile)

Set fso = CreateObject("Scripting.FileSystemObject") 
    If NOT fso.FolderExists(ExtractTo) Then 
       fso.CreateFolder(ExtractTo) 
End If 

Set objShell = CreateObject("Shell.Application") 
Set FilesInZip=objShell.NameSpace(ZipFile).items 

ObjShell.NameSpace(ExtractTo).CopyHere(FilesInZip) 
Set fso = Nothing 
Set objShell = Nothing 
End Sub

set WshShell = WScript.CreateObject("WScript.Shell")
strDesktop = WshShell.SpecialFolders("MyDocuments")

strZipPath   = strDesktop & strZipFile
strUnzipPath = strDesktop & strUnzipped

UnZip strUnzipPath , strZipPath

Como em sua resposta, eu corro o .vbs de um arquivo cmd:

cscript UnzipZip.vbs

Aqui está o erro:

C:\Users\Brett\Downloads\UnzipZip.vbs(12, 1) Microsoft VBScript runtime error: Object required: 'objShell.NameSpace(...)'

Alguma ideia de como corrigir isso?

    
por Bretsky 04.07.2015 / 10:21

1 resposta

0

strDesktop retorna uma string sem um "\" final. Portanto, strDesktop & strZipFile retornará uma string para um caminho que não existe.

Para ambas as concatenações, insira & "\" (por exemplo, strDesktop & "\" & strZipFile ). Tanto quanto sei, o dobro "\" irá avaliar um único "\" em caminhos, pelo menos em alguns dialetos VB.

Eu também noto que você não testa a existência de arquivo antes de tentar descompactá-lo (o que realmente se refere ao erro) e que strDesktop é atribuído ao valor de "MeusDocumentos" (não é um erro, mais como "set duck = horse")

    
por 18.12.2015 / 23:01