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

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

我对 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

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

cscript UnzipZip.vbs

错误如下:

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

有什么办法可以修复这个问题吗?

答案1

strDesktop返回不带尾随“\”的字符串。因此strDesktop & strZipFile将返回不存在的路径的字符串。

对于两个连接,插入& "\"(例如strDesktop & "\" & strZipFile)。据我所知,双“\”在路径中将计算为单个“\”,至少在某些 VB 方言中是这样。

我还注意到,在尝试解压缩文件之前,您没有测试文件是否存在(这实际上就是您收到的错误所指的),并且strDesktop分配了“MyDocuments”的值(不是错误,更像是“set duck = horse”)

相关内容