【问题标题】:VBS unzipping - object required: 'objshell.NameSpace(...)'VBS 解压缩 - 需要对象:'objshell.NameSpace(...)'
【发布时间】:2015-07-04 15:25:12
【问题描述】:

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

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

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

【问题讨论】:

  • 您是否尝试过提供dungeon.zip 的完整路径?

标签: vbscript cmd zip unzip


【解决方案1】:

WshShell.SpecialFolders("MyDocuments") 返回路径没有尾随反斜杠。然后将文件名附加到它。

您需要添加一个反斜杠。

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

编辑以添加提示:

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

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

【讨论】:

  • 我刚刚运行了您的脚本,在更改了上面的行之后,它工作正常(使用我拥有的测试 zip 文件)。您确定您的dungeon.zip 文件位于您的My Documents 文件夹中吗?你确定这是一个合法的zip 文件吗?
【解决方案2】:

您的ZipFile

Set FilesInZip=objShell.NameSpace(ZipFile).items 

为空(“未定义”)。你是说strZipFile吗?

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

【讨论】:

  • 他的代码是正确的。 ZipFileUnZip 子的参数名称。由于 sub.. 上方和下方缺少缩进和代码,因此很难分辨。
【解决方案3】:

设置

   strZipFile  = "dungeon.zip\" 

   Set FilesInZip=objShell.NameSpace(strZipFile).items

在您的代码中。

【讨论】:

    【解决方案4】:

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

    【讨论】:

    • 感谢您的解释,我无法弄清楚为什么会出现此错误,我将路径放入资源管理器并意识到我错过了其中的一部分! #KUDOS
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-30
    • 2019-11-17
    • 1970-01-01
    • 2011-06-28
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多