是否在VBScript中获取当前临时目录路径?

是否在VBScript中获取当前临时目录路径?,vbscript,Vbscript,获取当前临时目录路径的VB技巧: Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long 在VBScript中失败。那么 WScript.CreateObject("Scripting.FileSystemObject").GetSpecialFolder(2) 我花了一段时

获取当前临时目录路径的VB技巧:

Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long 
在VBScript中失败。那么

WScript.CreateObject("Scripting.FileSystemObject").GetSpecialFolder(2)
我花了一段时间才在谷歌上找到它。因此,对于下一个寻找与我相同的人…

另一种可能性:

Const WindowsFolder = 0

Const SystemFolder = 1

Const TemporaryFolder = 2

Dim fso: Set fso = CreateObject("Scripting.FileSystemObject")

Dim tempFolder: tempFolder = fso.GetSpecialFolder(TemporaryFolder)
CreateObject("WScript.Shell").ExpandEnvironmentStrings("%Temp%")

您还可以继续使用
GetTempPath
API。不过,从vbscript调用API有点棘手。以下是有关如何从vbscript进行Win32 API调用的一些提示:

完全基于,以下是我的解决方案:

Public Enum SpecialFolder
    WindowsFolder = 0
    SystemFolder = 1
    TempFolder = 2
End Enum

Public Function GetFolder(folder As Integer) As String
    Dim objFSO  As Object

    Set objFSO = CreateObject("Scripting.FileSystemObject")

    GetFolder = objFSO.GetSpecialFolder(folder)
End Function

例如,您可以使用
GetFolder(TempFolder)
获取用户临时文件夹的路径名。

谢谢,Patrick,我没有粘贴一行,但这样更好。没问题。我正要粘贴我自己的、几乎完全相同的答案,突然我看到你又一次以一秒之差打败了我;)我最喜欢这个,因为它和
GetSpecialFolder
一样容易使用,但不太晦涩。至少,对于任何曾经使用过DOS或Windows环境变量的人来说,这是一个非常直观和自我记录的问题。Fabien的回答和这一个一样正确,但是,好的文档让其他人更容易阅读。这让我感到
C:\Windows
。Fabien的回答让我找到了正确的文件夹
R:\Temp
,你可以描述更多细节。实际上,这些链接不是很有用,这应该是一个评论。