VBS unzipping - đối tượng được yêu cầu: 'objshell.NameSpace (Cách)'


0

Tôi biết rất ít về bash hoặc vbs. Tôi đang cố gắng tạo một tập lệnh sẽ tự động giải nén một zip có tên là 'dungeon.zip', trong đó có một trò chơi nhỏ mà tôi đã lập trình. Tôi muốn giải nén nó vào một thư mục có tên là dungeon trong cùng thư mục chứa tệp zip. Tôi đã sử dụng mã từ câu trả lời này và thay thế các tệp bằng các tệp của mình:

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

Như trong câu trả lời của anh ấy, tôi chạy .vbs từ tệp cmd:

cscript UnzipZip.vbs

Đây là lỗi:

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

Còn ý tưởng nào để sửa cái này nữa không?


Trong tập lệnh gốc, thư mục strZipFile và strUnzipped đều sử dụng một đường dẫn tương đối bắt đầu bằng "\". Có một lý do cụ thể tại sao bạn bỏ qua điều đó? Bạn có thể cần phải đặt tập lệnh của mình vào cùng một thư mục als zipfile và thêm tập lệnh đó hoặc sử dụng fullpath
Syberdoor

Câu trả lời:


0

strDesktoptrả về một chuỗi mà không có dấu "\". Vì vậy, strDesktop & strZipFilesẽ trả về một chuỗi cho một đường dẫn không tồn tại.

Đối với cả hai cách ghép, chèn & "\"(ví dụ strDesktop & "\" & strZipFile). Theo như tôi biết, nhân đôi "\" sẽ đánh giá thành một "\" duy nhất trong các đường dẫn, ít nhất là trong một số phương ngữ VB.

Tôi cũng lưu ý rằng bạn không kiểm tra sự tồn tại của tệp trước khi bạn cố gắng giải nén nó (đó thực sự là lỗi mà bạn gặp phải) và đó strDesktoplà giá trị của "MyDocument" (không phải là lỗi, giống như "set" vịt = ngựa ")

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.