我一直试图使以下脚本与登录的当前用户一起使用:
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”部分时,这很好用,但是我希望它是一个变量。我在其他帖子中尝试了许多建议,但似乎无法使其正常工作。
我将在启动时将其部署到具有不同用户的几台计算机上,这就是为什么它需要作为变量的原因,因为我不知道在任何给定时间谁将登录到这些计算机。
答案 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
谢谢。