VBS 解压缩 - 需要对象:'objshell.NameSpace(...)'

Bre*_*sky 4 vbscript zip cmd unzip

我对 bash 或 vbs 知之甚少。我正在尝试制作一个脚本,该脚本将自动解压缩名为“dungeon.zip”的 zip,其中包含我编写的一个小游戏。我想将其解压缩到 zip 文件所在目录中的一个名为 dungeon 的文件夹中。我使用了此答案中的代码,并将这些文件替换为我的文件:

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
Run Code Online (Sandbox Code Playgroud)

正如他的回答一样,我从 cmd 文件运行 .vbs:

cscript UnzipZip.vbs
Run Code Online (Sandbox Code Playgroud)

这是错误:

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

知道如何解决这个问题吗?

Bon*_*ond 6

WshShell.SpecialFolders("MyDocuments")返回不带尾部反斜杠的路径。然后将您的文件名附加到其中。

您需要添加反斜杠。

strZipPath   = strDesktop & "\" & strZipFile
strUnzipPath = strDesktop & "\" & strUnzipped
Run Code Online (Sandbox Code Playgroud)

编辑以添加提示:

使用该BuildPath()函数(它是 的一部分FileSystemObject)就不必再担心尾随反斜杠了。

strZipPath   = fso.BuildPath(strDesktop, strZipFile)
strUnzipPath = fso.BuildPath(strDesktop, strUnzipped)
Run Code Online (Sandbox Code Playgroud)