2017-07-24 1 views
0

J'appelle une chaîne vbs avec un fichier batch. Je passe une chaîne par lots à vbs.Erreur lors de la transmission de l'argument chaîne de batch à vbs

fichier batch complet:

C: 
cd C:\folder 
Set arg = "sample foo" 
Wscript titi.vbs "%arg" 
pause 

Mais, quand je lis l'argument dans le VBScript avec str = Wscript.Arguments(0) la valeur de str est sample et de ne pas sample foo

Comment puis-je résoudre ce problème?

Répondre

3

Le problème est simple et commun à ceux qui ont utilisé d'autres langages de programmation.

Set arg = "sample foo" 

définit la variable:% arg espace% à la chaîne: espace "exemple foo"


La façon d'assigner des variables doivent être:

Set arg="sample foo" 

ou:

Set "arg="sample foo"" 

Je préfère ce dernier.

BTW, vous avez aussi manqué une fermeture % lors de l'utilisation "%arg" au lieu de "%arg%". Comme vous utilisez l'argument "%arg%", il n'est pas nécessaire de définir les guillemets doubles dans la chaîne de variable réelle.

utiliser Just:

CD /D "C:\folder" 
Set "arg=sample foo" 

Wscript titi.vbs "%arg%" 

Pause 
0

J'ai essayé ci-dessous et fonctionne comme prévu,

1.vbs

str = Wscript.Arguments(0) 
WScript.Echo(str) 

1.bat

Wscript 1.vbs "sample foo" 

ligne cmd sortie

enter image description here

0

Le fichier de commandes que vous avez publié doit avoir la sortie VBScript arg en raison de la syntaxe de votre variable malformée. Même si vous avez corrigé %arg à %arg%, vous devez obtenir une chaîne vide en sortie, car votre affectation de variable est également erronée (set arg =... définit une variable %arg %).

changement

Set arg = "sample foo" 
Wscript titi.vbs "%arg" 

à

set "arg=sample foo" 
Wscript titi.vbs "%arg%" 

et le problème disparaîtra.

+0

grâce, la solution fonctionne, SRY pour ma question débutant – Elode