web-dev-qa-db-ja.com

VBScriptで現在の一時ディレクトリパスを取得しますか?

現在の一時ディレクトリのパスを取得するVBトリック:

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

vBScriptで失敗します。そう?

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

Googleで検索するのにしばらく時間がかかりました。だから私と同じものを探している次の人のために...

45
Fabien
Const WindowsFolder = 0

Const SystemFolder = 1

Const TemporaryFolder = 2

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

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

別の可能性:

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

完全に AnthonyWJonesの回答 に基づいて、これが私の解決策です:

_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)を使用して、ユーザーの一時フォルダのパス名を取得します。

0
COG

GetTempPath AP​​Iを使い続けることもできます。ただし、vbscriptからAPIを呼び出すのは少し注意が必要です。以下は、vbscriptからWin32 API呼び出しを行う方法に関するいくつかのポインタです。

参考1

参考資料2

参考文献

0
Makaveli84