OVH Cloud OVH Cloud

Comment tester le caractère & dans un string

5 réponses
Avatar
Gege
J'exécute un programme xxx.exe compilé en mode Standard avec VBS2EXE
que j'invoque de la façon suivante dans une session DOS
myprog.exe 'C:\myfolder\AAAA & BBBB'

Pour reconstituer ma ligne de commande j'utilise le début du programme
suivant :

Dim maligne
nbparm = App.ParameterCount
maligne = ""
For i = 1 to nbparm
tmp = App.ParameterString(i)
msgbox(tmp)
If tmp = Chr(38) Then babla.....
Else
maligne = maligne & " " & App.ParameterString(i)
End IF
Next

Tout marche bien, sauf que le & est transformé en 1.

Quelqu'un a-il une idée ?

5 réponses

Avatar
Georges MAUREL
Bonjour Gérard
Dans la doc de vbs2exe il est dit que ParameterString doit avoir un
paramètre compris entre 0 et ParameterCount-1
Cependant ce script fonctionne correctement et si vous faites un
msgbox(maligne) en fin de boucle vous verrez qu'il contient bien
'C:myfolderAAAA & BBBB'

Cordialement
Georges


"Gege" a écrit dans le message de news:

J'exécute un programme xxx.exe compilé en mode Standard avec VBS2EXE
que j'invoque de la façon suivante dans une session DOS
myprog.exe 'C:myfolderAAAA & BBBB'

Pour reconstituer ma ligne de commande j'utilise le début du programme
suivant :

Dim maligne
nbparm = App.ParameterCount
maligne = ""
For i = 1 to nbparm
tmp = App.ParameterString(i)
msgbox(tmp)
If tmp = Chr(38) Then babla.....
Else
maligne = maligne & " " & App.ParameterString(i)
End IF
Next

Tout marche bien, sauf que le & est transformé en 1.

Quelqu'un a-il une idée ?



Avatar
Gege
Merci Georges, Andreas (le père de VBS2EXE) avec qui j'ai eu des échanges à
ce propos, m'a dit qu'il fallait compiler avec le mode standard (et non
wscript support). Par contre dans ce cas, la boucle doit commencer à 1
jusqu'à count car le parametre 0 est le nom du programme (ça il ne le savait
pas). Ce qui résoud le problème que j'avais eu avec le dernier paramètre
qui n'était pas passé.

Donc je suis face à un dilemme : soit avec wscript dois demander aux
utilsateurs d'ajouter un paramètre supplémenatire dans leurs lignes de
commandes (ce qui n'est pas très esthétique), soit en mode standard j'impose
une restriction sur le contenu des paramètres passés.
Merci encore

Gérard



"Georges MAUREL" wrote:

Bonjour Gérard
Dans la doc de vbs2exe il est dit que ParameterString doit avoir un
paramètre compris entre 0 et ParameterCount-1
Cependant ce script fonctionne correctement et si vous faites un
msgbox(maligne) en fin de boucle vous verrez qu'il contient bien
'C:myfolderAAAA & BBBB'

Cordialement
Georges


"Gege" a écrit dans le message de news:

J'exécute un programme xxx.exe compilé en mode Standard avec VBS2EXE
que j'invoque de la façon suivante dans une session DOS
myprog.exe 'C:myfolderAAAA & BBBB'

Pour reconstituer ma ligne de commande j'utilise le début du programme
suivant :

Dim maligne
nbparm = App.ParameterCount
maligne = ""
For i = 1 to nbparm
tmp = App.ParameterString(i)
msgbox(tmp)
If tmp = Chr(38) Then babla.....
Else
maligne = maligne & " " & App.ParameterString(i)
End IF
Next

Tout marche bien, sauf que le & est transformé en 1.

Quelqu'un a-il une idée ?








Avatar
Georges MAUREL
Re bonjour Gérard,
Il y a quelque chose que je ne comprend pas.
En compilant en mode standard, si on lande
myprog.exe C:myfolderAAAA BBBB
on obtient bien 2 paramètres C:myfolderAAAA et BBBB
Qu'est-ce qui vous empèche de procéder ainsi ?

Cordialement
Georges




"Gege" a écrit dans le message de news:

Merci Georges, Andreas (le père de VBS2EXE) avec qui j'ai eu des échanges
à
ce propos, m'a dit qu'il fallait compiler avec le mode standard (et non
wscript support). Par contre dans ce cas, la boucle doit commencer à 1
jusqu'à count car le parametre 0 est le nom du programme (ça il ne le
savait
pas). Ce qui résoud le problème que j'avais eu avec le dernier paramètre
qui n'était pas passé.

Donc je suis face à un dilemme : soit avec wscript dois demander aux
utilsateurs d'ajouter un paramètre supplémenatire dans leurs lignes de
commandes (ce qui n'est pas très esthétique), soit en mode standard
j'impose
une restriction sur le contenu des paramètres passés.
Merci encore

Gérard



"Georges MAUREL" wrote:

Bonjour Gérard
Dans la doc de vbs2exe il est dit que ParameterString doit avoir un
paramètre compris entre 0 et ParameterCount-1
Cependant ce script fonctionne correctement et si vous faites un
msgbox(maligne) en fin de boucle vous verrez qu'il contient bien
'C:myfolderAAAA & BBBB'

Cordialement
Georges


"Gege" a écrit dans le message de news:

J'exécute un programme xxx.exe compilé en mode Standard avec VBS2EXE
que j'invoque de la façon suivante dans une session DOS
myprog.exe 'C:myfolderAAAA & BBBB'

Pour reconstituer ma ligne de commande j'utilise le début du programme
suivant :

Dim maligne
nbparm = App.ParameterCount
maligne = ""
For i = 1 to nbparm
tmp = App.ParameterString(i)
msgbox(tmp)
If tmp = Chr(38) Then babla.....
Else
maligne = maligne & " " & App.ParameterString(i)
End IF
Next

Tout marche bien, sauf que le & est transformé en 1.

Quelqu'un a-il une idée ?










Avatar
Gege
Ici le programme n'a qu'un seul paramètre encadré par des quotes, et le &
fait partie du nom du folder. Tricky non ?

Ce n'est pas moi qui ait de tels noms mais certains utilisateurs. Rien ne
s'y oppose dans les conventions de noms en Windows. Il faut donc que je
pense à tous les cas possibles

Merci

"Georges MAUREL" wrote:

Re bonjour Gérard,
Il y a quelque chose que je ne comprend pas.
En compilant en mode standard, si on lande
myprog.exe C:myfolderAAAA BBBB
on obtient bien 2 paramètres C:myfolderAAAA et BBBB
Qu'est-ce qui vous empèche de procéder ainsi ?

Cordialement
Georges




"Gege" a écrit dans le message de news:

Merci Georges, Andreas (le père de VBS2EXE) avec qui j'ai eu des échanges
à
ce propos, m'a dit qu'il fallait compiler avec le mode standard (et non
wscript support). Par contre dans ce cas, la boucle doit commencer à 1
jusqu'à count car le parametre 0 est le nom du programme (ça il ne le
savait
pas). Ce qui résoud le problème que j'avais eu avec le dernier paramètre
qui n'était pas passé.

Donc je suis face à un dilemme : soit avec wscript dois demander aux
utilsateurs d'ajouter un paramètre supplémenatire dans leurs lignes de
commandes (ce qui n'est pas très esthétique), soit en mode standard
j'impose
une restriction sur le contenu des paramètres passés.
Merci encore

Gérard



"Georges MAUREL" wrote:

Bonjour Gérard
Dans la doc de vbs2exe il est dit que ParameterString doit avoir un
paramètre compris entre 0 et ParameterCount-1
Cependant ce script fonctionne correctement et si vous faites un
msgbox(maligne) en fin de boucle vous verrez qu'il contient bien
'C:myfolderAAAA & BBBB'

Cordialement
Georges


"Gege" a écrit dans le message de news:

J'exécute un programme xxx.exe compilé en mode Standard avec VBS2EXE
que j'invoque de la façon suivante dans une session DOS
myprog.exe 'C:myfolderAAAA & BBBB'

Pour reconstituer ma ligne de commande j'utilise le début du programme
suivant :

Dim maligne
nbparm = App.ParameterCount
maligne = ""
For i = 1 to nbparm
tmp = App.ParameterString(i)
msgbox(tmp)
If tmp = Chr(38) Then babla.....
Else
maligne = maligne & " " & App.ParameterString(i)
End IF
Next

Tout marche bien, sauf que le & est transformé en 1.

Quelqu'un a-il une idée ?















Avatar
Georges MAUREL
Effectivement c'est pas cool.... car & permet d'enchainer plusieurs
commandes
Je ne voies pas d'autres solutions que de demander aux utilisateurs de
mettre leur paramètres entre ""

Cordialement
Georges



"Gege" a écrit dans le message de news:

Ici le programme n'a qu'un seul paramètre encadré par des quotes, et le &
fait partie du nom du folder. Tricky non ?

Ce n'est pas moi qui ait de tels noms mais certains utilisateurs. Rien
ne
s'y oppose dans les conventions de noms en Windows. Il faut donc que je
pense à tous les cas possibles

Merci

"Georges MAUREL" wrote:

Re bonjour Gérard,
Il y a quelque chose que je ne comprend pas.
En compilant en mode standard, si on lande
myprog.exe C:myfolderAAAA BBBB
on obtient bien 2 paramètres C:myfolderAAAA et BBBB
Qu'est-ce qui vous empèche de procéder ainsi ?

Cordialement
Georges




"Gege" a écrit dans le message de news:

Merci Georges, Andreas (le père de VBS2EXE) avec qui j'ai eu des
échanges
à
ce propos, m'a dit qu'il fallait compiler avec le mode standard (et non
wscript support). Par contre dans ce cas, la boucle doit commencer à 1
jusqu'à count car le parametre 0 est le nom du programme (ça il ne le
savait
pas). Ce qui résoud le problème que j'avais eu avec le dernier
paramètre
qui n'était pas passé.

Donc je suis face à un dilemme : soit avec wscript dois demander aux
utilsateurs d'ajouter un paramètre supplémenatire dans leurs lignes de
commandes (ce qui n'est pas très esthétique), soit en mode standard
j'impose
une restriction sur le contenu des paramètres passés.
Merci encore

Gérard



"Georges MAUREL" wrote:

Bonjour Gérard
Dans la doc de vbs2exe il est dit que ParameterString doit avoir un
paramètre compris entre 0 et ParameterCount-1
Cependant ce script fonctionne correctement et si vous faites un
msgbox(maligne) en fin de boucle vous verrez qu'il contient bien
'C:myfolderAAAA & BBBB'

Cordialement
Georges


"Gege" a écrit dans le message de
news:

J'exécute un programme xxx.exe compilé en mode Standard avec
VBS2EXE
que j'invoque de la façon suivante dans une session DOS
myprog.exe 'C:myfolderAAAA & BBBB'

Pour reconstituer ma ligne de commande j'utilise le début du
programme
suivant :

Dim maligne
nbparm = App.ParameterCount
maligne = ""
For i = 1 to nbparm
tmp = App.ParameterString(i)
msgbox(tmp)
If tmp = Chr(38) Then babla.....
Else
maligne = maligne & " " & App.ParameterString(i)
End IF
Next

Tout marche bien, sauf que le & est transformé en 1.

Quelqu'un a-il une idée ?