Розпакування VBS - необхідний об'єкт: 'objshell.NameSpace (…)'


0

Я дуже мало знаю про bash або vbs. Я намагаюся створити сценарій, який автоматично розпакує поштовий індекс під назвою "dungeon.zip", який містить маленьку гру, яку я запрограмував. Я хочу розпакувати його до папки під назвою підземелля в тому самому каталозі, в якому знаходився 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

Як і у його відповіді, я запускаю .vbs з файлу cmd:

cscript UnzipZip.vbs

Ось помилка:

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

Будь-яка ідея, як це виправити?


У оригінальному сценарії папка strZipFile та strUnzipped використовують відносний шлях, починаючи з "\". Чи є конкретна причина, чому ви пропустили це? Вам, мабуть, або потрібно помістити свій скрипт у ту саму папку, а також додати zipfile і додати це, або використовувати fullpath
Syberdoor

Відповіді:


0

strDesktopповертає рядок без останнього "\". Так strDesktop & strZipFileповернеться рядок для шляху, який не існує.

Для обох конкатенацій вставити & "\"(наприклад strDesktop & "\" & strZipFile). Наскільки я знаю, подвійний "\" буде оцінювати до одиничного "\" в шляхах, принаймні, в деяких діалектах VB.

Я також зауважу, що ви не тестуєте наявність файлу до того, як спробуєте розпакувати його (до чого насправді відноситься помилка), і strDesktopприсвоюється значення "MyDocuments" (не помилка, більше нагадує "встановити качка = кінь ")

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.