2016-08-05 63 views
0

我正在嘗試編寫一個將運行兩個其他vbscript的vbscript。這裏是我當前的代碼:從vbscript運行vbscript,找不到文件

Dim objShell, oFSO 

Set objShell = Wscript.CreateObject("WScript.Shell") 
Set oFSO = CreateObject("Scripting.FileSystemObject") 

' Determine script location for VBScript 
sScriptDir = oFSO.GetParentFolderName(WScript.ScriptFullName) 

' Run scripts 
objShell.Run oFSO.BuildPath(sScriptDir, "code\saveExcel.vbs") , 0, true 

objShell.Run oFSO.BuildPath(sScriptDir, "code\launchScript.vbs") , 0, true 

' close shell 
Set objShell = Nothing 

該文件夾的結構如下:

enter image description here

當我運行我的劇本我收到此錯誤信息: enter image description here

我已經寫了幾十個以與上述腳本相同的格式運行其他腳本的腳本,但這是唯一不起作用的腳本,我不知道爲什麼。

+0

什麼樣的價值是你在你的'sScriptDir'變量中獲得。 FSO的路徑限制爲255個字符,並且由於這可能是一個網絡驅動器,可能會埋藏很深的文件夾,所以'GetParentFolderName'可能會獲得較長的UNC路徑並超過字符數限制。 – JNevill

+0

這是57個字符長,遠小於最大長度。它也沒有拉動完整的UNC路徑,但如果是這樣,它仍然會少於100個字符。 –

+0

如果你使用'BuildPath'代替硬編碼路徑,你會得到同樣的錯誤嗎?我在這裏虧本,因爲我的一切都看起來很好 - 你的代碼。 – JNevill

回答

1

fso.Run()要求包含空格的路徑被引用。所以...即使你傳遞了一個包含路徑的字符串,字符串本身也必須包含雙引號。

因此,在你的代碼中調用時objShell.Run()

objShell.Run """" & oFSO.BuildPath(sScriptDir, "code\saveExcel.vbs") & """", 0, true