OVH Cloud OVH Cloud

Comment passer des paramètre lors de l'exécution d'un .exe ?

15 réponses
Avatar
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

Set fil = fso.GetFile(v_name)
MyFile.WriteLine f1.name & " - " & _
"Created " & fil.DateCreated & _
" - Lastaccess " & fil.DateLastAccessed & _
" - Lastmodified " & fil.DateLastModified
Next

MyFile.Close
End Sub

listdir

5 réponses

1 2
Avatar
Georges MAUREL
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













Avatar
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




Avatar
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.
Avatar
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



Avatar
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

1 2