Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

VBS unzipping - object required: 'objshell.NameSpace(...)'

I know very little about bash or vbs. I am trying to make a script that will automatically unzip a zip called 'dungeon.zip', which contains a little game I programmed. I want to unzip it to a folder called dungeon in the same directory that the zip file was in. I used the code from this answer, and replaced the files with my files:

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

As in his answer, I run the .vbs from a cmd file:

cscript UnzipZip.vbs

Here is the error:

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

Any idea on how to fix this?

like image 531
Bretsky Avatar asked Sep 14 '25 13:09

Bretsky


2 Answers

WshShell.SpecialFolders("MyDocuments") returns the path without a trailing backslash. You're then appending your filename to it.

You'll need to add a backslash.

strZipPath   = strDesktop & "\" & strZipFile
strUnzipPath = strDesktop & "\" & strUnzipped

Edit to add a tip:

Use the BuildPath() function (it's part of FileSystemObject) to never have to worry about trailing backslashes again.

strZipPath   = fso.BuildPath(strDesktop, strZipFile)
strUnzipPath = fso.BuildPath(strDesktop, strUnzipped)
like image 135
Bond Avatar answered Sep 17 '25 19:09

Bond


Your ZipFile in

Set FilesInZip=objShell.NameSpace(ZipFile).items 

is empty ('undefined'). Did you mean strZipFile?

You should use Option Explicit to avoid such blunders.

like image 34
Ekkehard.Horner Avatar answered Sep 17 '25 20:09

Ekkehard.Horner