web-dev-qa-db-fra.com

Obtenir le chemin du répertoire temporaire actuel dans VBScript?

L'astuce VB pour obtenir le chemin du répertoire temporaire actuel:

Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long 

échoue dans VBScript. Alors?

21
Fabien
WScript.CreateObject("Scripting.FileSystemObject").GetSpecialFolder(2)

Il m'a fallu un certain temps pour le trouver sur Google. Donc pour le prochain qui cherche le même que moi ...

43
Fabien
Const WindowsFolder = 0

Const SystemFolder = 1

Const TemporaryFolder = 2

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

Dim tempFolder: tempFolder = fso.GetSpecialFolder(TemporaryFolder)
35
AnthonyWJones

Une autre possibilité:

CreateObject("WScript.Shell").ExpandEnvironmentStrings("%Temp%")
13
Fionnuala

Vous pouvez également continuer à utiliser l'API GetTempPath. C'est un peu délicat d'appeler des API depuis vbscript. Voici quelques indications sur la manière de passer des appels à l'API Win32 à partir de vbscript:

Référence 1

Référence 2

Référence 3

1
Makaveli84

Basé entièrement sur la réponse d'AnthonyWJones , voici ma solution:

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

Ainsi, par exemple, vous utiliseriez GetFolder(TempFolder) pour obtenir le chemin d'accès du dossier temporaire de l'utilisateur.

0
COG