2011-09-23 67 views
1

是否有可能使用.vbs中的路徑變量。我的基本情況是我有一個vbs腳本,經常在一臺計算機上運行,​​一個人登錄並由一個完全不同用戶名的管理員運行(假設該文件將被右鍵單擊並「運行」)。在.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,或有更簡單的方式來做到這一點?

回答

2

如果我理解你正確地後在做什麼,你要麼去的地方你創建像"string part 1" & logger & "string part 2"字符串或與您記錄變量使用替換功能,以取代%Logger%(例如Replace(templateString, "%Logger%", logger))需要做字符串連接。這與批處理文件中使用的格式%1沒有直接的關係。

-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:\用戶」 將在每個系統上有效。有時您可能想要爲用戶個人資料使用不同的位置。我也查看了%AppData%環境變量,但在我的情況下指向AppData \ Roaming,並且您想要AppData \ Local。

+0

C的信息:\用戶未在EV有效在我們的環境中,我們有使用文檔和設置的XP以及將用戶配置文件存儲在服務器上的幾個站點。我打算確定操作系統並有條件地運行一個目錄。我繼續測試腳本,它遇到了同樣的問題,它會調用任何運行該文件的用戶配置文件。我將編輯帖子以使其更加清晰,對此感到遺憾。 – MaskedPlant

3

我想你的意思是一個腳本變量。試試這個:

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

它的工作謝謝你,這正是我正在尋找。 – MaskedPlant

3

你可以在vbs中使用命令行參數。請參閱以下TechNet網站:使用例如VBS底部 http://technet.microsoft.com/en-us/library/ee156618.aspx

,您可以根據腳本名稱後輸入計算機名Ping.vbs答覆時,其被稱爲(C:\腳本\ 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