VBscript相对路径

时间:2013-03-25 17:49:03

标签: vbscript

我正在尝试使用以下脚本(顺便说一下,它被批处理文件调用)来解压缩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(...)'”),所以当然我的意思是那些可行的东西。

2 个答案:

答案 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)