OVH Cloud OVH Cloud

Argument en ligne de commande sous VB !!!

7 réponses
Avatar
toon
Bonjour.
J'administre un reseau, et je cherche a envoyer des mails dynamiquement via
VB.
En fait ce que je voudrai, c'est que le "body" du mail que j'envoi,
corresponde a un argument (chaine de caracteres) de l'executable.
ex :
c:\mail.exe "Espace disque sur lecteur F: inferieur a 5Go"

Vous comprenez.
"mail.exe" --> le programme qui ouvre la connexion au serveur SMTP, et
effectue la communication.
"bla bla bla" --> argument qui correspond en fait au contenu du mail

J'ai pas l'intention de modifier a chaque fois mon "mail.exe" pour un
inclure le message a envoyer.

Je ne sais pas si je suis clair dans mes explications ... quelqu'un a
compris quleque chose, et si oui, avez vous une solution ???

7 réponses

Avatar
Pascal B.
Bonjour Toon

En VB, pour récupérer l'argument qui suit la commande, on utilise la fonction

- Command

Exemple:
Dim Body as string
Body = Command

Cordialement
Pascal B.


"toon" wrote in message news:
| Bonjour.
| J'administre un reseau, et je cherche a envoyer des mails dynamiquement via
| VB.
| En fait ce que je voudrai, c'est que le "body" du mail que j'envoi,
| corresponde a un argument (chaine de caracteres) de l'executable.
| ex :
| c:mail.exe "Espace disque sur lecteur F: inferieur a 5Go"
|
| Vous comprenez.
| "mail.exe" --> le programme qui ouvre la connexion au serveur SMTP, et
| effectue la communication.
| "bla bla bla" --> argument qui correspond en fait au contenu du mail
|
| J'ai pas l'intention de modifier a chaque fois mon "mail.exe" pour un
| inclure le message a envoyer.
|
| Je ne sais pas si je suis clair dans mes explications ... quelqu'un a
| compris quleque chose, et si oui, avez vous une solution ???
|
|
Avatar
toon
EXCELLENT !!!

Merci ;- )

"Pascal B." a écrit dans le message de news:
#
Bonjour Toon

En VB, pour récupérer l'argument qui suit la commande, on utilise la


fonction

- Command

Exemple:
Dim Body as string
Body = Command

Cordialement
Pascal B.


"toon" wrote in message


news:
| Bonjour.
| J'administre un reseau, et je cherche a envoyer des mails dynamiquement


via
| VB.
| En fait ce que je voudrai, c'est que le "body" du mail que j'envoi,
| corresponde a un argument (chaine de caracteres) de l'executable.
| ex :
| c:mail.exe "Espace disque sur lecteur F: inferieur a 5Go"
|
| Vous comprenez.
| "mail.exe" --> le programme qui ouvre la connexion au serveur SMTP, et
| effectue la communication.
| "bla bla bla" --> argument qui correspond en fait au contenu du mail
|
| J'ai pas l'intention de modifier a chaque fois mon "mail.exe" pour un
| inclure le message a envoyer.
|
| Je ne sais pas si je suis clair dans mes explications ... quelqu'un a
| compris quleque chose, et si oui, avez vous une solution ???
|
|




Avatar
toon
Et si je veux passer plusieur argument ... un pour le objet du mail, et
l'autre pour le corps du mail ???

"Pascal B." a écrit dans le message de news:
#
Bonjour Toon

En VB, pour récupérer l'argument qui suit la commande, on utilise la


fonction

- Command

Exemple:
Dim Body as string
Body = Command

Cordialement
Pascal B.


"toon" wrote in message


news:
| Bonjour.
| J'administre un reseau, et je cherche a envoyer des mails dynamiquement


via
| VB.
| En fait ce que je voudrai, c'est que le "body" du mail que j'envoi,
| corresponde a un argument (chaine de caracteres) de l'executable.
| ex :
| c:mail.exe "Espace disque sur lecteur F: inferieur a 5Go"
|
| Vous comprenez.
| "mail.exe" --> le programme qui ouvre la connexion au serveur SMTP, et
| effectue la communication.
| "bla bla bla" --> argument qui correspond en fait au contenu du mail
|
| J'ai pas l'intention de modifier a chaque fois mon "mail.exe" pour un
| inclure le message a envoyer.
|
| Je ne sais pas si je suis clair dans mes explications ... quelqu'un a
| compris quleque chose, et si oui, avez vous une solution ???
|
|




Avatar
ng
Salut,

Tu peux utiliser la fonction SplitArg() comme ci-dessous pour séparer les
arguments :

Option Explicit

Public Function SplitArg(ByVal strArg As String) As String()
Dim i As Integer, GuillemetOuvert As Boolean
Dim sCar As String * 1, sArgEnCours As String
Dim nInd As Integer, tblArg() As String
strArg = strArg & " ": nInd = 0
For i = 1 To Len(strArg)
sCar = Mid$(strArg, i, 1)
If sCar = """" Then
GuillemetOuvert = Not GuillemetOuvert
Else
If sCar = " " And Not GuillemetOuvert Then
ReDim Preserve tblArg(nInd)
tblArg(nInd) = sArgEnCours
sArgEnCours = ""
nInd = nInd + 1
Else
sArgEnCours = sArgEnCours & sCar
End If
End If
Next
SplitArg = tblArg
Erase tblArg
End Function

Public Sub Main()
Dim tblArg() As String
Dim i As Integer

tblArg = SplitArg(Command$)

For i = 0 To UBound(tblArg)
MsgBox tblArg(i)
Next
End Sub


--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

toon wrote:
Et si je veux passer plusieur argument ... un pour le objet du mail,
et l'autre pour le corps du mail ???

"Pascal B." a écrit dans le message
de news: #
Bonjour Toon

En VB, pour récupérer l'argument qui suit la commande, on utilise la
fonction

- Command

Exemple:
Dim Body as string
Body = Command

Cordialement
Pascal B.


"toon" wrote in message


news:
Bonjour.
J'administre un reseau, et je cherche a envoyer des mails
dynamiquement via VB.
En fait ce que je voudrai, c'est que le "body" du mail que j'envoi,
corresponde a un argument (chaine de caracteres) de l'executable.
ex :
c:mail.exe "Espace disque sur lecteur F: inferieur a 5Go"

Vous comprenez.
"mail.exe" --> le programme qui ouvre la connexion au serveur SMTP,
et effectue la communication.
"bla bla bla" --> argument qui correspond en fait au contenu du mail

J'ai pas l'intention de modifier a chaque fois mon "mail.exe" pour
un inclure le message a envoyer.

Je ne sais pas si je suis clair dans mes explications ... quelqu'un
a compris quleque chose, et si oui, avez vous une solution ???






Avatar
Guy DETIENNE
Salut ;O)

Pour plusieurs arguments dans la ligne de commande, ce sera à toi de gérer
cela.
La ligne de commande devra comporter un délimiteur du genre ''.
Chaque argument étant précédé de ce signe.

Il faudra donc en VB extraire le nombre d'arguments en comptant le nombre de
délémiteurs.

Vois la fonction SPLIT pour extraire les chaînes avec délémiteur.

Guy




"toon" a écrit dans le message de
news:
Et si je veux passer plusieur argument ... un pour le objet du mail, et
l'autre pour le corps du mail ???

"Pascal B." a écrit dans le message de


news:
#
> Bonjour Toon
>
> En VB, pour récupérer l'argument qui suit la commande, on utilise la
fonction
>
> - Command
>
> Exemple:
> Dim Body as string
> Body = Command
>
> Cordialement
> Pascal B.
>
>
> "toon" wrote in message
news:
> | Bonjour.
> | J'administre un reseau, et je cherche a envoyer des mails


dynamiquement
via
> | VB.
> | En fait ce que je voudrai, c'est que le "body" du mail que j'envoi,
> | corresponde a un argument (chaine de caracteres) de l'executable.
> | ex :
> | c:mail.exe "Espace disque sur lecteur F: inferieur a 5Go"
> |
> | Vous comprenez.
> | "mail.exe" --> le programme qui ouvre la connexion au serveur SMTP, et
> | effectue la communication.
> | "bla bla bla" --> argument qui correspond en fait au contenu du mail
> |
> | J'ai pas l'intention de modifier a chaque fois mon "mail.exe" pour un
> | inclure le message a envoyer.
> |
> | Je ne sais pas si je suis clair dans mes explications ... quelqu'un a
> | compris quleque chose, et si oui, avez vous une solution ???
> |
> |
>
>




Avatar
toon
Ok ... merci.

Je pensais qu'il existait peut etre une fonction propre a vb comme "command"
par exemple, ou une fonction derivee.
Je vais etudier votre methode, et je vous remercie pour le code.

;- )

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

Salut,

Tu peux utiliser la fonction SplitArg() comme ci-dessous pour séparer les
arguments :

Option Explicit

Public Function SplitArg(ByVal strArg As String) As String()
Dim i As Integer, GuillemetOuvert As Boolean
Dim sCar As String * 1, sArgEnCours As String
Dim nInd As Integer, tblArg() As String
strArg = strArg & " ": nInd = 0
For i = 1 To Len(strArg)
sCar = Mid$(strArg, i, 1)
If sCar = """" Then
GuillemetOuvert = Not GuillemetOuvert
Else
If sCar = " " And Not GuillemetOuvert Then
ReDim Preserve tblArg(nInd)
tblArg(nInd) = sArgEnCours
sArgEnCours = ""
nInd = nInd + 1
Else
sArgEnCours = sArgEnCours & sCar
End If
End If
Next
SplitArg = tblArg
Erase tblArg
End Function

Public Sub Main()
Dim tblArg() As String
Dim i As Integer

tblArg = SplitArg(Command$)

For i = 0 To UBound(tblArg)
MsgBox tblArg(i)
Next
End Sub


--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

toon wrote:
> Et si je veux passer plusieur argument ... un pour le objet du mail,
> et l'autre pour le corps du mail ???
>
> "Pascal B." a écrit dans le message
> de news: #
>> Bonjour Toon
>>
>> En VB, pour récupérer l'argument qui suit la commande, on utilise la
>> fonction
>>
>> - Command
>>
>> Exemple:
>> Dim Body as string
>> Body = Command
>>
>> Cordialement
>> Pascal B.
>>
>>
>> "toon" wrote in message
> news:
>>> Bonjour.
>>> J'administre un reseau, et je cherche a envoyer des mails
>>> dynamiquement via VB.
>>> En fait ce que je voudrai, c'est que le "body" du mail que j'envoi,
>>> corresponde a un argument (chaine de caracteres) de l'executable.
>>> ex :
>>> c:mail.exe "Espace disque sur lecteur F: inferieur a 5Go"
>>>
>>> Vous comprenez.
>>> "mail.exe" --> le programme qui ouvre la connexion au serveur SMTP,
>>> et effectue la communication.
>>> "bla bla bla" --> argument qui correspond en fait au contenu du mail
>>>
>>> J'ai pas l'intention de modifier a chaque fois mon "mail.exe" pour
>>> un inclure le message a envoyer.
>>>
>>> Je ne sais pas si je suis clair dans mes explications ... quelqu'un
>>> a compris quleque chose, et si oui, avez vous une solution ???




Avatar
toon
Merci pour l'info !!!

"Guy DETIENNE" a écrit dans le message de news:

Salut ;O)

Pour plusieurs arguments dans la ligne de commande, ce sera à toi de gérer
cela.
La ligne de commande devra comporter un délimiteur du genre ''.
Chaque argument étant précédé de ce signe.

Il faudra donc en VB extraire le nombre d'arguments en comptant le nombre


de
délémiteurs.

Vois la fonction SPLIT pour extraire les chaînes avec délémiteur.

Guy




"toon" a écrit dans le message de
news:
> Et si je veux passer plusieur argument ... un pour le objet du mail, et
> l'autre pour le corps du mail ???
>
> "Pascal B." a écrit dans le message de
news:
> #
> > Bonjour Toon
> >
> > En VB, pour récupérer l'argument qui suit la commande, on utilise la
> fonction
> >
> > - Command
> >
> > Exemple:
> > Dim Body as string
> > Body = Command
> >
> > Cordialement
> > Pascal B.
> >
> >
> > "toon" wrote in message
> news:
> > | Bonjour.
> > | J'administre un reseau, et je cherche a envoyer des mails
dynamiquement
> via
> > | VB.
> > | En fait ce que je voudrai, c'est que le "body" du mail que j'envoi,
> > | corresponde a un argument (chaine de caracteres) de l'executable.
> > | ex :
> > | c:mail.exe "Espace disque sur lecteur F: inferieur a 5Go"
> > |
> > | Vous comprenez.
> > | "mail.exe" --> le programme qui ouvre la connexion au serveur SMTP,


et
> > | effectue la communication.
> > | "bla bla bla" --> argument qui correspond en fait au contenu du mail
> > |
> > | J'ai pas l'intention de modifier a chaque fois mon "mail.exe" pour


un
> > | inclure le message a envoyer.
> > |
> > | Je ne sais pas si je suis clair dans mes explications ... quelqu'un


a
> > | compris quleque chose, et si oui, avez vous une solution ???
> > |
> > |
> >
> >
>
>