【发布时间】:2009-01-08 14:04:15
【问题描述】:
VB获取当前临时目录路径的技巧:
Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
在 VBScript 中失败。那么?
【问题讨论】:
标签: vbscript
VB获取当前临时目录路径的技巧:
Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
在 VBScript 中失败。那么?
【问题讨论】:
标签: vbscript
WScript.CreateObject("Scripting.FileSystemObject").GetSpecialFolder(2)
我花了一段时间才在 Google 上找到它。所以对于下一个寻找和我一样的人......
【讨论】:
Const WindowsFolder = 0
Const SystemFolder = 1
Const TemporaryFolder = 2
Dim fso: Set fso = CreateObject("Scripting.FileSystemObject")
Dim tempFolder: tempFolder = fso.GetSpecialFolder(TemporaryFolder)
【讨论】:
C:\windows。 Fabien 的回答让我找到了正确的文件夹 R:\Temp
另一种可能性:
CreateObject("WScript.Shell").ExpandEnvironmentStrings("%Temp%")
【讨论】:
GetSpecialFolder 一样易于使用,但不那么晦涩难懂。至少,对于任何曾经使用过 DOS 或 Windows 环境变量的人来说,这个环境变量非常直观且可以自我记录。
您也可以继续使用GetTempPath API。不过,从 vbscript 调用 API 有点棘手。以下是一些关于如何从 vbscript 进行 Win32 API 调用的提示:
【讨论】:
完全基于AnthonyWJones' answer,这是我的解决方案:
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) 来获取用户临时文件夹的路径名。
【讨论】: