首先我要说的是,我是一个Linux人,并不熟悉VBS甚至是Windows全局变量。
我被要求更新VBS脚本,该脚本基本上将最新版本的访问表单复制到计算机。目前,它将此访问形式放在C:\ MedMaint中。问题是我们不在此位置以管理员身份运行。因此,当新用户尝试访问vbs脚本时,原始用户必须删除该文件夹。我需要将此脚本更改为〜/ MedMaint的linux等效项,或“C:\ Documents and Settings \ MyUserName \ Application Data \ MedMaint”
以下是代码示例
If Not FSO.FileExists("c:\MedMaint\" & File.Name) Then
FSO.CopyFile File.Path, "c:\MedMaint\" ' copy the missing file
Else
Set RPFile = FSO.GetFile("c:\MedMaint\" & File.Name) ' Get the file object from the local object
If (File.DateLastModified >= RPFile.DateLastModified) Then
FSO.CopyFile File.Path, "c:\MedMaint\"
我想知道如何将c:\ MedMaint \引用更改为用户的主目录
答案 0 :(得分:16)
获取用户个人资料文件夹的路径(例如,Windows XP中的 C:\ Documents and Settings \< username> 或 C:\ Users在Windows Vista中\< username> ,您可以执行以下任何操作:
使用WshShell.ExpandEnvironmentStrings
方法评估USERPROFILE
环境变量:
Set oShell = CreateObject("WScript.Shell")
strHomeFolder = oShell.ExpandEnvironmentStrings("%USERPROFILE%")
使用Shell.Namespace
方法检索文件夹路径:
Const ssfPROFILE = &H28
Set oShell = CreateObject("Shell.Application")
strHomeFolder = oShell.NameSpace(ssfPROFILE).Self.Path
如果您需要应用程序数据文件夹的路径(例如,Windows XP中的 C:\ Documents and Settings \< username> \ Application Data 或 C:\ Users \< username> \ AppData \ Roaming 在Windows Vista中),您可以使用类似的代码:
Set oShell = CreateObject("WScript.Shell")
strHomeFolder = oShell.ExpandEnvironmentStrings("%APPDATA%")
''# or
Const ssfAPPDATA = &H1A
Set oShell = CreateObject("Shell.Application")
strHomeFolder = oShell.NameSpace(ssfAPPDATA).Self.Path
要将文件夹名称附加到路径,您可以简单地使用字符串连接,如下所示:
strMedMaintFolder = strHomeFolder & "\MedMaint"
Alernatively,如果你的脚本包含很多路径连接,我建议使用FileSystemObject.BuildPath
方法,因为它会为你处理路径分隔符(\
):
Set oFSO = CreateObject("Scripting.FileSystemObject")
strMedMaintFolder = fso.BuildPath(strHomeFolder, "MedMaint")
答案 1 :(得分:2)
您可以使用Shell对象。
查看this链接。
答案 2 :(得分:1)
如果您使用的是Windows Scripting Host,则可以使用以下方法。
Set WshShell = CreateObject("WScript.Shell")
strHomeFolder = WshShell.ExpandEnvironmentStrings("%USERPROFILE%")