Comment passer des paramètre lors de l'exécution d'un .exe ?
15 réponses
Gege
Ma question est sans doute stupide, mais c'est la première fois que j'utilise
VB car d'ordinaire je programme en Java à cause de la portabilité. Pour des
raisons de manque d'API spécifiques pour Win/XP, j'ai dû adapter le petit
programme que m'a proposé Georges MAUREL (voir plus bas). J'ai également
acquis VBS2EXE pour le convertir en .EXE. Seulement j'ai un problème "Comment
passer des paramètres ".
Dans l'exemple ci-dessous, comme je ne sais pas comment faire, j'ai au
préalable créé un fichier avec une seule ligne pour spécifier le nom de mon
répertoire dont je doit lister les caractéristiques des fichiers. Evidemment
c'est très lourd et esthétiquement pas très joli. Je préfèrerais de loin
entrer :
LISTDIR nom_rep fichier_de_sortie
Comment passer les deux paramètres au programme ?
Merci d'avance.
Gérard Martinelli
----------- voici le programme -------------------
Sub Listdir()
Const ForReading = 1, ForWriting = 2
Dim path, fso, f, file, f1, Myfile, rep
Set fso = CreateObject("Scripting.FileSystemObject")
Set rep = fso.OpenTextFile("$$repname$$.txt", ForReading)
path = rep.ReadLine ' Renvoie le nom du répertoire"
Set MyFile = fso.CreateTextFile("$$listdir$$.txt", True)
Set f = fso.GetFolder(path)
Set fc = f.Files
For Each f1 in fc
v_name = path & f1.name
Bonjour Gérard, Je suis heureux d'avoir pu vous aider. A une prochaine fois peut-être
Cordialement Georges
"Gege" a écrit dans le message de news:
Comme j'avais mis un titre je n'avais pas eu ce problème. A propos des passages de paramètres, j'ai ajouté une entrée dans le forumm (rubrique Bugs).
Quoi qu'il en soit je tiens vraiment à vous remercier encore une fois pour votre asssitance efficace. Gérard Martinelli
"Georges MAUREL" wrote:
Bonjour Gérard, En fait j'ai trouvé : en mettant un nom dans "application properties" je n'ai plus eu de warning
Pour le problème du nombre de paramètres, je pense que vous pouvez passer un mail sur leur support pour leur rapporter ce bug.
Cordialement Georges
"Gege" a écrit dans le message de news:
Non moi je n'ai pas de warning. Que dit-il ? amicalement
Gérard l "Georges MAUREL" wrote:
Re bonjour Gérard Effectivement, il doit y avoir un problème au niveau du compilateur... car le nombre de paramètres n'est pas correct En plus, je ne sais pas si pour vous c'est pareil, mais j'ai un warning à la compilation
Cordialement Georges MAUREL
Bonjour Gérard,
Je suis heureux d'avoir pu vous aider.
A une prochaine fois peut-être
Cordialement
Georges
"Gege" <Gege@discussions.microsoft.com> a écrit dans le message de news:
98DA46E5-EC2E-453E-A503-5AC77CA5E011@microsoft.com...
Comme j'avais mis un titre je n'avais pas eu ce problème. A propos des
passages de paramètres, j'ai ajouté une entrée dans le forumm (rubrique
Bugs).
Quoi qu'il en soit je tiens vraiment à vous remercier encore une fois pour
votre asssitance efficace.
Gérard Martinelli
"Georges MAUREL" wrote:
Bonjour Gérard,
En fait j'ai trouvé : en mettant un nom dans "application properties" je
n'ai plus eu de warning
Pour le problème du nombre de paramètres, je pense que vous pouvez passer
un
mail sur leur support pour leur rapporter ce bug.
Cordialement
Georges
"Gege" <Gege@discussions.microsoft.com> a écrit dans le message de news:
16CA1999-DE2C-4AA7-BC0E-E3F806FCE066@microsoft.com...
Non moi je n'ai pas de warning. Que dit-il ?
amicalement
Gérard
l
"Georges MAUREL" wrote:
Re bonjour Gérard
Effectivement, il doit y avoir un problème au niveau du compilateur...
car
le nombre de paramètres n'est pas correct
En plus, je ne sais pas si pour vous c'est pareil, mais j'ai un
warning à
la
compilation
Bonjour Gérard, Je suis heureux d'avoir pu vous aider. A une prochaine fois peut-être
Cordialement Georges
"Gege" a écrit dans le message de news:
Comme j'avais mis un titre je n'avais pas eu ce problème. A propos des passages de paramètres, j'ai ajouté une entrée dans le forumm (rubrique Bugs).
Quoi qu'il en soit je tiens vraiment à vous remercier encore une fois pour votre asssitance efficace. Gérard Martinelli
"Georges MAUREL" wrote:
Bonjour Gérard, En fait j'ai trouvé : en mettant un nom dans "application properties" je n'ai plus eu de warning
Pour le problème du nombre de paramètres, je pense que vous pouvez passer un mail sur leur support pour leur rapporter ce bug.
Cordialement Georges
"Gege" a écrit dans le message de news:
Non moi je n'ai pas de warning. Que dit-il ? amicalement
Gérard l "Georges MAUREL" wrote:
Re bonjour Gérard Effectivement, il doit y avoir un problème au niveau du compilateur... car le nombre de paramètres n'est pas correct En plus, je ne sais pas si pour vous c'est pareil, mais j'ai un warning à la compilation
Cordialement Georges MAUREL
Gege
J'ouvre à nouveau ce topic car j'ai investigué un peu plus sur le passage de paramètres, lorsque l'on veut utiliser un .exe à partir d'une session DOS.
1. Je me suis aperçu que quand on passe n paramètres, en fait en arrivant dans le programme, VBS en procure n+1 car le premier est le nom du programme. Ainsi la bonne boucle est d'aller jusqu'à count (et non count-1)
2. Ne pas utiliser wscript, mais APP
3. Compiler en mode standard avec VBS2EXE
Voici donc le début de mon programme.
nbparm = App.ParameterCount maligne = "" For i = 1 to nbparm tmp = App.ParameterString(i) maligne = maligne & " " & App.ParameterString(i) Next
"Georges MAUREL" wrote:
Bonjour Gérard, Je suis heureux d'avoir pu vous aider. A une prochaine fois peut-être
J'ouvre à nouveau ce topic car j'ai investigué un peu plus sur le passage de
paramètres, lorsque l'on veut utiliser un .exe à partir d'une session DOS.
1. Je me suis aperçu que quand on passe n paramètres, en fait en arrivant
dans le programme, VBS en procure n+1 car le premier est le nom du programme.
Ainsi la bonne boucle est d'aller jusqu'à count (et non count-1)
2. Ne pas utiliser wscript, mais APP
3. Compiler en mode standard avec VBS2EXE
Voici donc le début de mon programme.
nbparm = App.ParameterCount
maligne = ""
For i = 1 to nbparm
tmp = App.ParameterString(i)
maligne = maligne & " " & App.ParameterString(i)
Next
"Georges MAUREL" wrote:
Bonjour Gérard,
Je suis heureux d'avoir pu vous aider.
A une prochaine fois peut-être
J'ouvre à nouveau ce topic car j'ai investigué un peu plus sur le passage de paramètres, lorsque l'on veut utiliser un .exe à partir d'une session DOS.
1. Je me suis aperçu que quand on passe n paramètres, en fait en arrivant dans le programme, VBS en procure n+1 car le premier est le nom du programme. Ainsi la bonne boucle est d'aller jusqu'à count (et non count-1)
2. Ne pas utiliser wscript, mais APP
3. Compiler en mode standard avec VBS2EXE
Voici donc le début de mon programme.
nbparm = App.ParameterCount maligne = "" For i = 1 to nbparm tmp = App.ParameterString(i) maligne = maligne & " " & App.ParameterString(i) Next
"Georges MAUREL" wrote:
Bonjour Gérard, Je suis heureux d'avoir pu vous aider. A une prochaine fois peut-être
Heffgé
Bonjour,
Comme Gege et bien d'autres je viens d'écrire dans mon coin un petit truc en VBS pour mettre le contenu d'un répertoire dans un fichier texte (ANSI alors que le classique dir > fichier génère du texte en ASCII). J'ai moi aussi un problème de passage de paramètres et c'est pourquoi je viens me brancher sur ce fil.
J'ai été un peu plus ambitieux que Gege et ce script est censé fonctionner indifféremment en fenêtre DOS ou sous Windows, directement ou en association avec le menu contextuel d'un dossier. Pour ce dernier cas de figure, je crée une nouvelle action pour le type de fichier "dossier", liste par exemple, et je lui associe mon script avec la syntaxe suivante :
wscript.exe mon_script.vbs "%L" "*"
J'ai été obligé de coder ces paramètres, le L pour récupérer le nom long du dossier pointé et l'* pour décaler d'un cran le nom court qui lui est systématiquement passé, quoi que l'on fasse (mon deuxième paramètre est le nom du fichier à créer mais dans cette utilisation je crée un fichier par défaut dans le répertoire TEMP). Je suis sous Win98 SE et tout baigne mais sur les OS NT (tests effectués par d'autres personnes), il y a des trucs bizarres. D'après ce qui m'a été rapporté j'ai l'impression qu'il y a un décalage dans les paramètres comme si nom court du dossier se retrouvait en premier alors que moi je le vois en dernier.
Est-ce que quelqu'un pourrait confirmer ce fait ?
Indépendamment de ce problème plus que gênant (ce mode de fonctionnement répond à l'objectif n° 1 du cahier des charges que je m'étais fixé) un autre a été détecté.
Pour déterminer si je suis sous DOS ou sous Windows je teste wscript.fullname :
If Mid(wscript.fullname, Len(wscript.fullname) - 10, 7) = "WSCRIPT" Then mod_win = True Else mod_win = False End If
Il semblerait qu'avec 2000 ou XP tout se passe comme si on était sous DOS quand on est en fait sous Windows. Sur un lancement direct sans paramètre je suis censé afficher une boîte de dialogue et c'est l'aide en ligne qui apparaît, alors qu'elle ne devrait le faire qu'en DOS !
Faut-il que je teste d'une autre manière le fait d'avoir été lancé via Wscript (implicitement ou explicitement) plutôt que via Cscript ?
Le source complet du script est disponible ici : http://gondard.perso.cegetel.net/Informat/Brico_fg/Brico_fg.htm#contenu.
Merci d'avance pour votre aide.
Bonjour,
Comme Gege et bien d'autres je viens d'écrire dans mon coin un petit truc en
VBS pour mettre le contenu d'un répertoire dans un fichier texte (ANSI alors
que le classique dir > fichier génère du texte en ASCII). J'ai moi aussi un
problème de passage de paramètres et c'est pourquoi je viens me brancher sur
ce fil.
J'ai été un peu plus ambitieux que Gege et ce script est censé fonctionner
indifféremment en fenêtre DOS ou sous Windows, directement ou en association
avec le menu contextuel d'un dossier. Pour ce dernier cas de figure, je crée
une nouvelle action pour le type de fichier "dossier", liste par exemple, et
je lui associe mon script avec la syntaxe suivante :
wscript.exe mon_script.vbs "%L" "*"
J'ai été obligé de coder ces paramètres, le L pour récupérer le nom long du
dossier pointé et l'* pour décaler d'un cran le nom court qui lui est
systématiquement passé, quoi que l'on fasse (mon deuxième paramètre est le
nom du fichier à créer mais dans cette utilisation je crée un fichier par
défaut dans le répertoire TEMP). Je suis sous Win98 SE et tout baigne mais
sur les OS NT (tests effectués par d'autres personnes), il y a des trucs
bizarres. D'après ce qui m'a été rapporté j'ai l'impression qu'il y a un
décalage dans les paramètres comme si nom court du dossier se retrouvait en
premier alors que moi je le vois en dernier.
Est-ce que quelqu'un pourrait confirmer ce fait ?
Indépendamment de ce problème plus que gênant (ce mode de fonctionnement
répond à l'objectif n° 1 du cahier des charges que je m'étais fixé) un autre
a été détecté.
Pour déterminer si je suis sous DOS ou sous Windows je teste
wscript.fullname :
If Mid(wscript.fullname, Len(wscript.fullname) - 10, 7) = "WSCRIPT" Then
mod_win = True
Else
mod_win = False
End If
Il semblerait qu'avec 2000 ou XP tout se passe comme si on était sous DOS
quand on est en fait sous Windows. Sur un lancement direct sans paramètre je
suis censé afficher une boîte de dialogue et c'est l'aide en ligne qui
apparaît, alors qu'elle ne devrait le faire qu'en DOS !
Faut-il que je teste d'une autre manière le fait d'avoir été lancé via
Wscript (implicitement ou explicitement) plutôt que via Cscript ?
Le source complet du script est disponible ici :
http://gondard.perso.cegetel.net/Informat/Brico_fg/Brico_fg.htm#contenu.
Comme Gege et bien d'autres je viens d'écrire dans mon coin un petit truc en VBS pour mettre le contenu d'un répertoire dans un fichier texte (ANSI alors que le classique dir > fichier génère du texte en ASCII). J'ai moi aussi un problème de passage de paramètres et c'est pourquoi je viens me brancher sur ce fil.
J'ai été un peu plus ambitieux que Gege et ce script est censé fonctionner indifféremment en fenêtre DOS ou sous Windows, directement ou en association avec le menu contextuel d'un dossier. Pour ce dernier cas de figure, je crée une nouvelle action pour le type de fichier "dossier", liste par exemple, et je lui associe mon script avec la syntaxe suivante :
wscript.exe mon_script.vbs "%L" "*"
J'ai été obligé de coder ces paramètres, le L pour récupérer le nom long du dossier pointé et l'* pour décaler d'un cran le nom court qui lui est systématiquement passé, quoi que l'on fasse (mon deuxième paramètre est le nom du fichier à créer mais dans cette utilisation je crée un fichier par défaut dans le répertoire TEMP). Je suis sous Win98 SE et tout baigne mais sur les OS NT (tests effectués par d'autres personnes), il y a des trucs bizarres. D'après ce qui m'a été rapporté j'ai l'impression qu'il y a un décalage dans les paramètres comme si nom court du dossier se retrouvait en premier alors que moi je le vois en dernier.
Est-ce que quelqu'un pourrait confirmer ce fait ?
Indépendamment de ce problème plus que gênant (ce mode de fonctionnement répond à l'objectif n° 1 du cahier des charges que je m'étais fixé) un autre a été détecté.
Pour déterminer si je suis sous DOS ou sous Windows je teste wscript.fullname :
If Mid(wscript.fullname, Len(wscript.fullname) - 10, 7) = "WSCRIPT" Then mod_win = True Else mod_win = False End If
Il semblerait qu'avec 2000 ou XP tout se passe comme si on était sous DOS quand on est en fait sous Windows. Sur un lancement direct sans paramètre je suis censé afficher une boîte de dialogue et c'est l'aide en ligne qui apparaît, alors qu'elle ne devrait le faire qu'en DOS !
Faut-il que je teste d'une autre manière le fait d'avoir été lancé via Wscript (implicitement ou explicitement) plutôt que via Cscript ?
Le source complet du script est disponible ici : http://gondard.perso.cegetel.net/Informat/Brico_fg/Brico_fg.htm#contenu.
Merci d'avance pour votre aide.
Do Re Mi chel La Si Do
Bonjour !
Juste un détail :
(ANSI alors que le classique dir > fichier génère du texte en ASCII)
Pas forcément. Cela dépend des config./paramètres du CMD :
CMD /A ==> ANSI CMD /U ==> Unicode
Pour plus de détails, voir : CMD /?
Et, cela dépend aussi du code-page, notamment en invite de commande. Ainsi, un simple CHCP 1252 permet de voir certains caractères différemment, mais change aussi l'encodage de la redirection.
Mon invite de commande est paramétrée par défaut en CP1252. Cela me permet de gérer sans problème, par exemple, le caractère EURO dans les noms de fichiers.
@-salutations
Michel Claveau
Bonjour !
Juste un détail :
(ANSI alors que le classique dir > fichier génère du texte en ASCII)
Pas forcément.
Cela dépend des config./paramètres du CMD :
CMD /A ==> ANSI
CMD /U ==> Unicode
Pour plus de détails, voir : CMD /?
Et, cela dépend aussi du code-page, notamment en invite de commande. Ainsi,
un simple CHCP 1252 permet de voir certains caractères différemment, mais
change aussi l'encodage de la redirection.
Mon invite de commande est paramétrée par défaut en CP1252. Cela me permet
de gérer sans problème, par exemple, le caractère EURO dans les noms de
fichiers.
(ANSI alors que le classique dir > fichier génère du texte en ASCII)
Pas forcément. Cela dépend des config./paramètres du CMD :
CMD /A ==> ANSI CMD /U ==> Unicode
Pour plus de détails, voir : CMD /?
Et, cela dépend aussi du code-page, notamment en invite de commande. Ainsi, un simple CHCP 1252 permet de voir certains caractères différemment, mais change aussi l'encodage de la redirection.
Mon invite de commande est paramétrée par défaut en CP1252. Cela me permet de gérer sans problème, par exemple, le caractère EURO dans les noms de fichiers.
@-salutations
Michel Claveau
Heffgé
Bonjour Michel Claveau,
Cela dépend des config./paramètres du CMD :
CMD /A ==> ANSI CMD /U ==> Unicode
Pour plus de détails, voir : CMD /?
Hélas ! Les dinausaures qui utilisent encore Win 9x n'ont pas de cmd.exe. Et notre command.com ne possède pas un tel commutateur.
Heffgé
Il faudrait que je teste le "change codepage" mais même si j'arrive à passer en ANSI le temps d'une redirection il doit quand même falloir faire un "prepare" avant et tout ça devient un peu compliqué à expliquer à des gens qui fuient dès qu'ils voient le mot DOS.
Merci néanmoins de votre contribution.
FG
Bonjour Michel Claveau,
Cela dépend des config./paramètres du CMD :
CMD /A ==> ANSI
CMD /U ==> Unicode
Pour plus de détails, voir : CMD /?
Hélas ! Les dinausaures qui utilisent encore Win 9x n'ont pas de cmd.exe. Et
notre command.com ne possède pas un tel commutateur.
Heffgé
Il faudrait que je teste le "change codepage" mais même si j'arrive à passer
en ANSI le temps d'une redirection il doit quand même falloir faire un
"prepare" avant et tout ça devient un peu compliqué à expliquer à des gens
qui fuient dès qu'ils voient le mot DOS.
Hélas ! Les dinausaures qui utilisent encore Win 9x n'ont pas de cmd.exe. Et notre command.com ne possède pas un tel commutateur.
Heffgé
Il faudrait que je teste le "change codepage" mais même si j'arrive à passer en ANSI le temps d'une redirection il doit quand même falloir faire un "prepare" avant et tout ça devient un peu compliqué à expliquer à des gens qui fuient dès qu'ils voient le mot DOS.