2015-07-04 3 views
1

Я знаю очень мало о bash или vbs. Я пытаюсь создать скрипт, который автоматически распакует ZIP-файл под названием «dungeon.zip», который содержит небольшую игру, которую я запрограммировал. Я хочу, чтобы распаковать его в папку под названием подземелье в той же директории, что почтовый файл был в я использовал код с this answer, и заменить файлы с моими файлами:.VBS unzipping - требуется объект: 'objshell.NameSpace (...)'

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 

Как и в своем ответе, я бегу в .vbs из CMD файла:

cscript UnzipZip.vbs 

Здесь ошибка:

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

Любая идея о том, как это исправить?

+0

Вы пытались предоставить полный путь к 'dungeon.zip'? – Bond

ответ

0

Ваш ZipFile в

Set FilesInZip=objShell.NameSpace(ZipFile).items 

пуста ('не определено'). Возможно, вы имели в виду strZipFile?

Чтобы избежать таких ошибок, вы должны использовать Option Explicit.

+0

Его код верный. 'ZipFile' - это имя аргумента для' UnZip'. Просто трудно сказать из-за отсутствия отступов и кода выше и ниже под. – Bond

+0

@Bond - вы правы. –

2

WshShell.SpecialFolders("MyDocuments") возвращает путь без обратный с обратной стороны. Затем вы добавляете к нему свое имя файла.

Вам нужно будет добавить обратную косую черту.

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

Изменить, чтобы добавить подсказку:

Используйте BuildPath() функции (это часть FileSystemObject) никогда не придется беспокоиться о вновь отставая обратной косой черты.

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

Я сделал это, все еще получая ту же ошибку. – Bretsky

+0

Я просто запустил ваш скрипт, изменив строки выше, и он отлично работает (используя тестовый файл 'zip', который у меня был). Вы уверены, что ваш файл 'dungeon.zip' находится в папке' Мои документы'? Вы уверены, что это законный файл 'zip'? – Bond

0

Set

strZipFile = "dungeon.zip\" 

и

Set FilesInZip=objShell.NameSpace(strZipFile).items 

в вашем коде.

0

Чтобы уточнить причину ошибки, я также столкнулся с этим, и это связано с тем, что местоположение файла zip недействительно или не может быть найдено. Попробуйте установить точный путь к zip-файлу, и он будет работать.

Смежные вопросы