Vbscript VBS解压缩-需要对象:';名称空间(…)';

Vbscript VBS解压缩-需要对象:';名称空间(…)';,vbscript,cmd,zip,unzip,Vbscript,Cmd,Zip,Unzip,我对bash或vbs知之甚少。我正在尝试制作一个脚本,它将自动解压缩一个名为“dungeon.zip”的zip文件,其中包含我编写的一个小游戏。我想将它解压缩到一个名为dungeon的文件夹中,该文件夹与zip文件所在的目录相同。我使用了中的代码,并将文件替换为我的文件: strZipFile = "dungeon.zip" strUnzipped = "dungeon\" Sub UnZip(ExtractTo,ZipFile) Set fso = CreateObject("Scrip

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

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(...)'

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

你的
ZipFile

Set FilesInZip=objShell.NameSpace(ZipFile).items 
为空(“未定义”)。你是说strZipFile


您应该使用
选项Explicit
来避免此类错误。

WshShell.SpecialFolders(“MyDocuments”)
返回的路径后面没有反斜杠。然后将文件名附加到它

你需要加一个反斜杠

strZipPath   = strDesktop & "\" & strZipFile
strUnzipPath = strDesktop & "\" & strUnzipped
编辑以添加提示:

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

strZipPath   = fso.BuildPath(strDesktop, strZipFile)
strUnzipPath = fso.BuildPath(strDesktop, strUnzipped)
设置


在您的代码中。

只是为了详细说明错误的原因。我也遇到了同样的情况,这是因为zip文件位置无效或不存在。尝试输入zip文件的确切路径,它就会工作。

您是否尝试提供
dungeon.zip的完整路径?他的代码是正确的
ZipFile
UnZip
sub的参数名。由于缺少缩进和sub上下的代码,很难说清楚。在更改了上面的行之后,我刚刚运行了您的脚本,它工作得很好(使用我之前的测试
zip
文件)。你确定你的
dungeon.zip文件位于你的
My Documents
文件夹中吗?你确定这是一个合法的
zip
文件吗?感谢你的解释,我不知道为什么会出现这个错误,我把路径放在了explorer中,然后意识到我丢失了其中的一部分#荣誉
   strZipFile  = "dungeon.zip\" 
   Set FilesInZip=objShell.NameSpace(strZipFile).items