我正在尝试使用以下脚本(顺便说一下,它被批处理文件调用)来解压缩Windows XP中的文件:
strZipFile ="C:\test.zip" 'name of zip file
outFolder = "C:\" 'destination folder of unzipped files
Set objShell = CreateObject( "Shell.Application" )
Set objSource = objShell.NameSpace(strZipFile).Items()
Set objTarget = objShell.NameSpace(outFolder)
intOptions = 256
objTarget.CopyHere objSource, intOptions
问题是,在我计划使用它的地方我不知道zip文件的完整路径,我将要知道的是它将与VBScript在同一个文件夹中,所以,在那里介意,是否可以用相对路径调用它?例如:
strZipFile ="test.zip"
这个例子不起作用(它给出了一个错误“Object required:'objShell.NameSpace(...)'”),所以当然我的意思是那些可行的东西。
答案 0 :(得分:10)
WScript.ScriptFullName和FSO.GetParentFolder可以解决您的问题:
>> p = CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName)
>>
>> WScript.Echo p
>>
M:\bin
更新Kiril的评论:
答案“是”的证据:
Option Explicit
Class cX
Private Sub Class_Initialize()
WScript.Echo "Class_Initialize"
End Sub
Private Sub Class_Terminate()
WScript.Echo "Class_Terminate"
End Sub
Public Function f()
f = "qed"
End Function
End Class
WScript.Echo 1
Dim f : f = (New cX).f()
WScript.Echo 2
WScript.Echo f
输出:
cscript 15621395.vbs
1
Class_Initialize
Class_Terminate
2
qed
答案 1 :(得分:4)
这应该是zip文件的完整路径:
strZipFile ="test.zip"
dim fso, fullPathToZip
set fso = CreateObject("Scripting.FileSystemObject")
fullPathToZip = fso.GetAbsolutePathName(strZipFile)