2017-06-17 1 views
0

Je suis bloqué sur l'écriture d'un fichier VBScript qui peut appeler un exécutable. Coincé sur la syntaxe pour les guillemets dans le littéral de chaîne.Le système ne trouve pas le fichier spécifié - exécution de l'exécutable à partir de vbscript

Cette ligne est censée écrire correctement la ligne qui appelle l'exécutable:

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

exePath est le chemin de maintien variable exécutable, et il est correct.

Essayer d'obtenir la ligne ci-dessus pour écrire aux VBS avec les éléments suivants:

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

Quand je lance VBScript éditer manuellement le fichier avec """ entre l'exécutable, je reçois des résultats corrects.

Mais au lieu, il l'écrit qu'il obtient erreur de système ne peut pas trouver le fichier spécifié:

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

avez-vous essayé en utilisant 'Chr (34)' 'pour obtenir le « ' »? essayez '" WshShell.Run "& Chr (34) &" C: \ Utilisateurs \ John Doe \ test.exe "& Chr (34)' –

+0

Alors, quel est le problème que vous rencontrez? Vous dites également que vous obtenez des résultats corrects ........ Essayez comme 'WshShell.Run" "" C: \ Utilisateurs \ John Doe \ test.exe "" "', Utilisez trois guillemets doubles d'un côté ici! – GTAVLover

+0

J'ai essayé le Chr (34) et cela n'a pas fonctionné. Le problème que je suis, permettez-moi de clarifier. Lorsque je fais la commande à l'intérieur de vbshell avec trois guillemets doubles, cela fonctionne comme prévu. Le problème: J'ai le code parent à l'intérieur d'une fonction Macro VBA dans Word, et j'essaye d'avoir la fonction Macro écrire le fichier vbscript au système de fichiers (complètement séparé de VBA), de sorte qu'il a écrit la ligne qui dit: 'WshShell.Run" "" C: \ Utilisateurs \ John Doe \ test.exe "" "' – Robert

Répondre

0

guillemets doubles VBScript à l'intérieur des chaînes littérales doivent être échappées, parce que la chaîne elle-même littéral doit être enfermé dans une paire de double citation. L'échappement est fait en doublant la double citation. D'où l'énoncé VBA

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

crée une instruction VBScript avec le chemin dans un seul ensemble de guillemets doubles:

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

Pour obtenir les deux paires supplémentaires nécessaires de guillemets doubles dans le fichier VBScript (qui mettre le chemin entre guillemets pour le shell), vous devez ajouter 8 autres guillemets doubles à la déclaration VBA:

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