Я очень мало знаю о Bash или VBS. Я пытаюсь создать скрипт, который автоматически разархивирует zip-файл с именем dungeon.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

Как и в его ответе, я запускаю .vbs из файла cmd:

cscript UnzipZip.vbs

Вот ошибка:

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

Есть идеи, как это исправить?

1 ответ1

0

strDesktop возвращает строку без завершающего символа "\". Так что strDesktop & strZipFile вернет строку для несуществующего пути.

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .