2017-06-17 4 views
0

Ich bin beim Schreiben einer VBScript-Datei fest, die eine ausführbare Datei aufrufen kann. Stuck auf Syntax für doppelte Anführungszeichen in String-Literal.Das System kann die angegebene Datei nicht finden - Ausführen von ausführbaren Dateien aus VBScript

Diese Linie soll richtig die Zeile schreiben, die die ausführbare Datei aufruft:

Print #PayLoadFile, "  WshShell.Run """ & exePath & """ " 

exePath ist variabel Halte Pfad ausführbar, und es ist richtig.

Der Versuch, die Linie zu erhalten oben auf die vbs mit folgenden schreiben:

WshShell.Run """C:\Users\John Doe\test.exe""" 

Wenn ich manuell ausführen VBScript Editieren der Datei mit """ zwischen der ausführbaren Datei, kann ich korrekte Ergebnisse erhalten.

Aber anstatt es schreibt sie, wie sie Fehler des Systems wird nicht Datei angegeben finden:

WshShell.Run "C:\John Doe\test.exe" 
+0

Haben Sie versucht, 'Chr (34)' zu verwenden, um das '" '" zu erhalten? Versuchen Sie '" WshShell.Run "& Chr (34) &" C: \ Benutzer \ John Doe \ test.exe "& Chr (34)' –

+0

Also, was ist das Problem, das Sie haben? Sie sagen auch, Sie bekommen korrekte Ergebnisse ........ Versuchen Sie wie 'WshShell.Run" "" C: \ Benutzer \ John Doe \ test.exe "" "', Verwenden Sie drei Anführungszeichen auf einer Seite hier! – GTAVLover

+0

Ich versuchte das Chr (34) und es hat nicht funktioniert. Das Problem, das ich habe, lassen Sie mich klären. Wenn ich den Befehl innerhalb von vbshell mit drei doppelten Anführungszeichen ausführe, funktioniert es wie beabsichtigt. Das Problem: Ich habe Elterncode innerhalb einer VBA-Makrofunktion in Word, und ich versuche, die Makrofunktion die vbscript-Datei in Dateisystem schreiben (vollständig getrennt von VBA), so dass es die Zeile geschrieben hat, die besagt: 'WshShell.Run" "" C: \ Benutzer \ John Doe \ test.exe "" "' – Robert

Antwort

0

In VBScript doppelte Anführungszeichen innerhalb Stringliterale entwertet werden müssen, weil die Stringliteral selbst muss in einem Paar eingeschlossen werden Anführungszeichen. Die Flucht erfolgt durch Verdoppelung des doppelten Zitats. Daraus ergibt sich die VBA-Anweisung

Print #PayLoadFile, "  WshShell.Run """ & exePath & """ " 
'          ^^    ^^ these double quotes 

erstellt eine VBScript-Anweisung mit dem Pfad in einem einzigen Satz von doppelten Anführungszeichen:

WshShell.Run "C:\Users\John Doe\test.exe" 
'   ^      ^     become these double quotes 

Um die erforderlichen zusätzlichen zwei Paare von doppelten Anführungszeichen in der VBScript-Datei (diese zu erhalten Setzen Sie den Pfad in doppelte Anführungszeichen für die Shell) Sie müssen 8 weitere doppelte Anführungszeichen zur VBA-Anweisung hinzufügen:

Print #PayLoadFile, "  WshShell.Run """"""" & exePath & """"""" " 
'          ^^^^    ^^^^ 
Verwandte Themen