使用shell.application获取特殊文件夹

时间:2011-11-08 13:52:28

标签: vbscript path special-folders

我需要在脚本中返回当前用户桌面的路径。现在我知道你可以用WScript做到这一点。

var WshShell = WScript.CreateObject("WScript.Shell");
         strDesktop = WshShell.SpecialFolders("Desktop");

但是对于我的脚本,这不起作用,因为我不能使用WScript。但我可以使用shell.application对象,如下所示。

 dim objShell
        dim ssfWINDOWS
        dim objFolder

        ssfWINDOWS = 0
        set objShell = CreateObject("shell.application")
            set objFolder = objshell.BrowseForFolder(0, "Example", 0, ssfWINDOWS)
                if (not objFolder is nothing) then
                Set objFolderItem = objFolder.Self
                    g_objIE.Document.All("logdir").Value = objFolderItem.path
                end if
            set objFolder = nothing
        set objShell = nothing

什么是语法,而不是“BrowseForFolder”我可以简单地返回当前用户桌面的路径?

IE替换

set objFolder = objshell.BrowseForFolder(0, "Example", 0, ssfWINDOWS)

与...平等。

strDesktop = WshShell.SpecialFolders("Desktop");

干杯

亚伦

2 个答案:

答案 0 :(得分:3)

尝试名称空间方法:

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(&H10&)

其中& H10&是桌面的特殊文件夹常量。有关所有特殊文件夹常量的列表,请参阅technet

答案 1 :(得分:3)

您需要使用Shell.Namespace(...).Self.Path

Const ssfDESKTOPDIRECTORY = &h10
Set oShell = CreateObject("Shell.Application")
strDesktop = oShell.NameSpace(ssfDESKTOPDIRECTORY).Self.Path

WScript.Echo strDesktop


  

但是对于我的脚本,这不起作用,因为我无法使用WScript。

您是说您不能使用WScript.CreateObject(...),因为WScript未定义?如果是这样,您只需使用CreateObject("WScript.Shell").SpecialFolders("Desktop")即可。请参阅What is the difference between CreateObject and Wscript.CreateObject?