
In meinem VBA-Skript habe ich Code geschrieben, um ein weiteres VBS-Skript zu erstellen und eine Codezeile in dieses Skript zu schreiben.
Hier ist der Code:
Set a = fs.CreateTextFile("C:\Users\user\documents\invis.vbs", True)
a.WriteLine ("CreateObject("Wscript.Shell").Run """" & WScript.Arguments(0) & """", 0, False")
a.Close
Ich glaube, der Code ist vollständig korrekt und voll funktionsfähig, es gibt jedoch einen Syntaxfehler, den ich nicht beheben kann. Der Fehler befindet sich in dieser Zeile: a.WriteLine ("CreateObject("Wscript.Shell").Run """" & WScript.Arguments(0) & """", 0, False")
genauer gesagt in diesem Teil: ("Wscript.Shell")
. Der Syntaxfehler ist auf die Anführungszeichen um das zurückzuführen Wscript.shell
.
Ich erhalte einen Syntaxfehler mit "Wscript.Shell"
hervorgehobener Meldung „Verwenden Sie ein Listentrennzeichen oder )“.
Wenn ich das " " entferne, ist der Syntaxfehler weg, aber ich brauche das " ", damit das Skript funktioniert.
Was kann ich tun, um das Problem zu beheben?
Antwort1
Diese Antwort gefällt Ihnen vielleicht nicht, da sie JScript und nicht VBS verwendet. Früher hatte ich ein Tool, um sie hin und her zu konvertieren, aber ich habe keine Ahnung, wo das Ding jetzt ist.
Wir hassen VBS und beide werden über dieselbe WSH-Engine ausgeführt. VBS ist nützlich, wenn Sie Dinge verwenden müssen, die mit SAFEARRAY zu tun haben (was ein PITA von Js ist). Einige COM-Aufrufe erfordern SAFEARRAY und obwohl Sie das von JS aus tun können, wird der Code riesig und hässlich, während in VBS alles unter der Haube verpackt ist. Ein Beispiel dafür sind einige der Funktionen, die Sie möglicherweise für WMI aufrufen, die SAFEARRAY benötigen, um die Argumentliste zu füllen.
Ich habe das gerade geschrieben und es funktioniert einwandfrei.
var oFso = new ActiveXObject("Scripting.FileSystemObject");
var oTextFile = oFso.CreateTextFile("C:\\Users\\user\\documents\\invis.js", true);
oTextFile.WriteLine("var oShell = new ActiveXObject(\"WScript.Shell\");");
oTextFile.WriteLine("oShell.Run( WScript.arguments(0), 0, false )" );
oTextFile.Close();
Nochmals Entschuldigung für JS, aber (meiner Meinung nach) ist VBS eine scheußliche Sprache, wenn es eine saubere Alternative gibt, die dasselbe macht.
Beachten Sie, dass Ihr Code keinen „Einzeiler“ enthalten muss. Dies macht den Code weniger lesbar und löst nichts.