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?
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)
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With