2016-08-05 124 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