首页 > 解决方案 > 如何在 VBScript 中使用 %username%

问题描述

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

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

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

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

标签: vbscript

解决方案


从帮助

返回环境变量的扩展值。

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

推荐阅读