我对bash或vbs知之甚少。我正在尝试制作一个脚本,它会自动解压缩一个名为'dungeon.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(...)'
有关如何解决这个问题的想法吗?
答案 0 :(得分:3)
WshShell.SpecialFolders("MyDocuments")
返回路径,不带一个尾部反斜杠。然后,您将文件名附加到它。
您需要添加反斜杠。
strZipPath = strDesktop & "\" & strZipFile
strUnzipPath = strDesktop & "\" & strUnzipped
修改以添加提示:
使用BuildPath()
函数(它是FileSystemObject
的一部分)永远不必担心会再次使用反斜杠。
strZipPath = fso.BuildPath(strDesktop, strZipFile)
strUnzipPath = fso.BuildPath(strDesktop, strUnzipped)
答案 1 :(得分:1)
您的ZipFile
Set FilesInZip=objShell.NameSpace(ZipFile).items
为空('undefined')。您的意思是strZipFile
吗?
您应该使用Option Explicit
来避免此类错误。
答案 2 :(得分:1)
集
strZipFile = "dungeon.zip\"
和
Set FilesInZip=objShell.NameSpace(strZipFile).items
代码。
答案 3 :(得分:0)
为了详细说明错误的原因,我也遇到了这个问题,因为zip文件位置无效或无法找到。尝试输入zip文件的确切路径,它将起作用。