在.vbs中的文件路径中使用变量

时间:2011-09-23 20:28:30

标签: variables vbscript

是否可以在.vbs中的路径中使用usa变量。我的基本情况是我有一个vbs脚本,通常会在一个人登录的计算机上运行,​​并由具有完全不同用户名的管理员运行(假设该文件将被右键单击并“运行方式”)。

该脚本编辑一个ini文件,该文件位于登录用户的用户目录中。我知道批处理中我只需插入变量"C:\Users\%Logger%\AppData\Local\stat.ini"即可替换该变量。但我不能在.vbs中这样做。到目前为止我的脚本。或者在答案here中查看大部分内容。

Dim blnRes: blnRes = 0
Dim strOld, strNew, logger
strOld = "frogg"
strNew = "frog"
logger = Inputbox("What is your Domain ID exactly as entered when you log into this machine?","Domain ID")

On Error Resume Next
Call update("C:\Users\logger\AppData\Local\stat.ini", strOld, strNew)
blnRes = blnRes Or (Err.Number = 0): Err.Clear

我是否可以通过某种方式将logger标记为变量,还是有更简单的方法可以执行此操作?

4 个答案:

答案 0 :(得分:4)

我猜你的意思是一个脚本变量。试试这个:

logger = Inputbox("What is ID?","Domain ID")
Call update("C:\Users\"& logger &"\AppData\Local\stat.ini", strOld, strNew)

答案 1 :(得分:3)

您可以将命令行参数与vbs一起使用。请参阅以下technet站点: http://technet.microsoft.com/en-us/library/ee156618.aspx

使用底部的示例vbs,您可以根据在调用脚本名称后输入的计算机名称(C:\ scripts \ Ping.vbs Hostname)进行Ping.vbs回复

这里有关于WScript.Aurguments的更多信息 https://www.google.com/search?q=WScript.Arguments&sourceid=ie7&rls=com.microsoft:en-us:IE-Address&ie=&oe=


'Ping.vbs:
Dim arArguments, strArgument
Set arArguments = WScript.Arguments
WScript.Echo WScript.Arguments.Count
For Each strArgument in arArguments
If Ping(strArgument) Then
    WScript.Echo strArgument & " is available."
Else
    WScript.Echo strArgument & " is not available."
End If  
Next 
Function Ping( myHostName )
Dim colPingResults, objPingResult, strQuery
strQuery = "SELECT * FROM Win32_PingStatus WHERE Address = '" & myHostName & "'"
Set colPingResults = GetObject("winmgmts://./root/cimv2").ExecQuery( strQuery )
For Each objPingResult In colPingResults
    If Not IsObject( objPingResult ) Then
        Ping = False
    ElseIf objPingResult.StatusCode = 0 Then
        Ping = True
    Else
        Ping = False
    End If
Next
Set colPingResults = Nothing
End Function

答案 2 :(得分:2)

如果我理解了你正确的事情,那么你要么需要在{@ 1}}之类的字符串中进行字符串连接,要么使用replace函数来替换"string part 1" & logger & "string part 2"(例如%Logger%)使用您的记录器变量。没有直接等效于批处理文件中使用的Replace(templateString, "%Logger%", logger)种格式。

答案 3 :(得分:-1)

这对我有用:

Dim fs, ws, Path
Set ws = CreateObject( "WScript.Shell" )
Path = ws.ExpandEnvironmentStrings( "%UserProfile%\testfile.txt" )
ws = Nothing
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.CreateTextFile (Path, True)
f.WriteLine("This is a test")
f.Close()
f = Nothing

不要假设“C:\ Users”在每个系统上都有效。有时您可能希望为用户配置文件使用其他位置。我还查看了%AppData%环境变量,但在我的情况下指向AppData \ Roaming,并且您想要AppData \ Local。