2016-08-05 33 views
0

nicht finden Ich versuche, ein VBScript zu schreiben, das zwei andere VBScripts ausführen wird. Hier ist meine aktuellen Code ist:Laufendes VBScript von VBScript, kann Datei

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 

Der Ordner ist wie folgt aufgebaut:

enter image description here

Wenn ich mein Skript ausführen ich diese Fehlermeldung: enter image description here

Ich habe geschrieben Dutzende von Skripte, die andere Skripte im selben Format wie das obige Skript ausführen, aber das ist das einzige, das nicht funktioniert und ich habe keine Ahnung warum.

+0

Welchen Wert sind Sie in Ihrem 'sScriptDir' Variable bekommen. FSO hat ein Limit von 255 Zeichen für Pfade, und da dies möglicherweise ein Netzwerklaufwerk ist, das möglicherweise einige Ordner tief vergraben ist, erhält "GetParentFolderName" möglicherweise den längeren UNC-Pfad und überschreitet das Zeichenlimit. – JNevill

+0

Es ist 57 Zeichen lang, viel weniger als die maximale Länge. Es zieht auch nicht den vollen UNC-Pfad, aber wenn es wäre, wäre es immer noch weniger als 100 Zeichen. –

+0

Erhalten Sie den gleichen Fehler, wenn Sie den Pfad fest codieren anstatt 'BuildPath' zu verwenden? Ich bin hier ratlos, da ich mit deinem Code alles gut sehe. – JNevill

Antwort

1

fso.Run() erfordert, dass Pfade mit Leerzeichen zitiert werden. Also ... obwohl Sie eine Zeichenfolge übergeben, die den Pfad enthält, muss die Zeichenfolge selbst doppelte Anführungszeichen enthalten.

Also, wenn objShell.Run() in Ihrem Code aufrufen:

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