如何在VBScript中使用%username%

时间:2018-09-17 01:53:19

标签: vbscript

我一直试图使以下脚本与登录的当前用户一起使用:

On Error Resume Next

Set oFileSys = WScript.CreateObject("Scripting.FileSystemObject")

sRoot = "C:\users\MyUsername\downloads"
today = Date
nMaxFileAge = 30
DeleteFiles(sRoot)

Function DeleteFiles(ByVal sFolder)
    Set oFolder = oFileSys.GetFolder(sFolder)
    Set aFiles = oFolder.Files
    Set aSubFolders = oFolder.SubFolders

    For Each file in aFiles
        dFileCreated = FormatDateTime(file.DateCreated, "2")
        If DateDiff("d", dFileCreated, today) > nMaxFileAge Then
            file.Delete(True)
        End If
    Next

    For Each folder in aSubFolders
        DeleteFiles(folder.Path)
    Next
End Function

现在,当我专门定义sRoot=的“ MyUsername”部分时,这很好用,但是我希望它是一个变量。我在其他帖子中尝试了许多建议,但似乎无法使其正常工作。

我将在启动时将其部署到具有不同用户的几台计算机上,这就是为什么它需要作为变量的原因,因为我不知道在任何给定时间谁将登录到这些计算机。

2 个答案:

答案 0 :(得分:2)

从帮助

  

返回环境变量的扩展值。

     

object.ExpandEnvironmentStrings(strString)

object
     

WshShell对象。

str
     

字符串

     

字符串值,指示要扩展的环境变量的名称。

     

ExpandEnvironmentStrings方法扩展环境变量   仅在PROCESS环境空间中定义。环境变量   名称(必须包含在“%”字符之间)不是   区分大小写。

     

以下代码扩展了Windows Directory环境变量   并显示它:

     

Visual Basic脚本

set WshShell = WScript.CreateObject("WScript.Shell")
WScript.Echo "WinDir is " & WshShell.ExpandEnvironmentStrings("%WinDir%")

首选方式是

  

返回用户名。

object.UserName 

object 
     

WshNetwork对象。

*Returns a string.*
     

如果您在登录脚本中使用此属性,请参阅创建一个   自动登录脚本。

     

下面的示例演示UserName属性的使用:

     Set WshNetwork = WScript.CreateObject("WScript.Network")
     WScript.Echo "Domain = " & WshNetwork.UserDomain
     WScript.Echo "Computer Name = " & WshNetwork.ComputerName
     WScript.Echo "User Name = " & WshNetwork.UserName

答案 1 :(得分:-2)

我在以下文章中找到了答案:

How to get a path with the variable user in VBscript

简而言之,对于需要此功能的其他人,这是更正后的代码(以我的示例为例):

On Error Resume Next

Set oShell = CreateObject( "WScript.Shell" )
userprofile = oShell.ExpandEnvironmentStrings("%USERPROFILE%")

Set oFileSys = WScript.CreateObject("Scripting.FileSystemObject")

sRoot = userprofile & "\downloads"                  
today = Date                                            
nMaxFileAge = 2                                         

谢谢。