Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

10 réponses

1 2
Avatar
Georges MAUREL
Bonjour Gege,
Pour récupérer des arguments, vous pouvez utiliser l'objet arguments de la
façon suivante

Sub Listdir(p_repertoire, p_fichier_sortier)

set objargs = wscrip.arguments

nbargument = objArgs.Count

if nbargument<>2 then
wscript.echo "Veuillez indiquer le répertoire et le nom du fichier de
sortie"
wscript.quit
else
v_repertoire = objArgs(0)
v_fichier_sortie = objArgs(1)
end if
.....

Cordialement
Georges


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

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


Avatar
Gege
Merci Georges, j'avais déjà essayé quelque chose dans ce genre (mais beaucoup
moins sophistiqué). J'ai donc ajouté les lignes que vous proposez, mais
quand
j'exécute le programme, j'obtiens le une fenêtre avec le message :
Nombre d'arguments ou affectation de propriété incorrects :LISTDIR

J'ai l'impression (car je ne suis novice) que cela est dû à l'appel de la
procédure Listdir à partir de la dernière ligne. Ne faut-il pas une
procédure Main ou quelque chose comme ça ? Car si ListDir est un
sous-programme, je suppose qu'il faut un programme principal qui lui passe
les paramètre.
J'ai oublié de vous dire que ce programme .EXE est invoqué dans une fenêtre
DOS

Merci encore

Gégé

Voici l'ensemble de mon programme avec vos modifications.

Sub ListDir(p_repertoire, p_fichier_sortie)
Const ForReading = 1, ForWriting = 2

set objargs = wscript.arguments
nbargument = objArgs.Count

if nbargument<>2 then
wscript.echo "Veuillez indiquer le répertoire et le nom du fichier de sortie"
wscript.quit
else
v_repertoire = objArgs(0)
v_fichier_sortie = objArgs(1)
end if

Dim path, fso, f, file, f1, Myfile, rep
path=v_repertoire
Set fso = CreateObject("Scripting.FileSystemObject")

Set MyFile = fso.CreateTextFile(v_fichier_sortie, 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




"Georges MAUREL" wrote:

Bonjour Gege,
Pour récupérer des arguments, vous pouvez utiliser l'objet arguments de la
façon suivante

Sub Listdir(p_repertoire, p_fichier_sortier)

set objargs = wscrip.arguments

nbargument = objArgs.Count

if nbargument<>2 then
wscript.echo "Veuillez indiquer le répertoire et le nom du fichier de
sortie"
wscript.quit
else
v_repertoire = objArgs(0)
v_fichier_sortie = objArgs(1)
end if
......

Cordialement
Georges


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

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







Avatar
Georges MAUREL
Re bonjour Gege
Effectivement, c'est dans le programme principal que l'on peut tester les
paramètre passés
Voici donc le code rectifié. J'ai aussi corrigé le fait que vous aviez omis
les " sur toutes les chaines de caractères

set objargs = wscript.arguments
nbargument = objArgs.Count

if nbargument2 then
wscript.echo "Veuillez indiquer le répertoire et le nom du fichier de
sortie"
wscript.quit
else
v_repertoire = trim(objArgs(0))
v_fichier_sortie = trim(objArgs(1))
ListDir v_repertoire, v_fichier_sortie
end if

Sub ListDir(v_repertoire, v_fichier_sortie)

Const ForReading = 1, ForWriting = 2

Dim path, fso, f, file, f1, Myfile, rep
if right(v_repertoire,1)<>"" then
v_repertoire = v_repertoire + ""
end if
path=v_repertoire
Set fso = CreateObject("Scripting.FileSystemObject")

Set MyFile = fso.CreateTextFile(v_fichier_sortie, True)
Set f = fso.GetFolder(path)
Set fc = f.Files
For Each f1 in fc
v_name = path & f1.name

wscript.echo v_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

Cordialement
Georges



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

Merci Georges, j'avais déjà essayé quelque chose dans ce genre (mais
beaucoup
moins sophistiqué). J'ai donc ajouté les lignes que vous proposez, mais
quand
j'exécute le programme, j'obtiens le une fenêtre avec le message :
Nombre d'arguments ou affectation de propriété incorrects :LISTDIR

J'ai l'impression (car je ne suis novice) que cela est dû à l'appel de la
procédure Listdir à partir de la dernière ligne. Ne faut-il pas une
procédure Main ou quelque chose comme ça ? Car si ListDir est un
sous-programme, je suppose qu'il faut un programme principal qui lui passe
les paramètre.
J'ai oublié de vous dire que ce programme .EXE est invoqué dans une
fenêtre
DOS

Merci encore

Gégé

Voici l'ensemble de mon programme avec vos modifications.

Sub ListDir(p_repertoire, p_fichier_sortie)
Const ForReading = 1, ForWriting = 2

set objargs = wscript.arguments
nbargument = objArgs.Count

if nbargument<>2 then
wscript.echo "Veuillez indiquer le répertoire et le nom du fichier de
sortie"
wscript.quit
else
v_repertoire = objArgs(0)
v_fichier_sortie = objArgs(1)
end if

Dim path, fso, f, file, f1, Myfile, rep
path=v_repertoire
Set fso = CreateObject("Scripting.FileSystemObject")

Set MyFile = fso.CreateTextFile(v_fichier_sortie, 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




"Georges MAUREL" wrote:

Bonjour Gege,
Pour récupérer des arguments, vous pouvez utiliser l'objet arguments de
la
façon suivante

Sub Listdir(p_repertoire, p_fichier_sortier)

set objargs = wscrip.arguments

nbargument = objArgs.Count

if nbargument<>2 then
wscript.echo "Veuillez indiquer le répertoire et le nom du fichier de
sortie"
wscript.quit
else
v_repertoire = objArgs(0)
v_fichier_sortie = objArgs(1)
end if
......

Cordialement
Georges


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

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









Avatar
Gege
Merci Georges pour votre patience. J'ai fait un copier/coller de votre code.
Puis je l'ai compilé, puis lancé une fenêtre DOS dans laquelle j'ai entré :

LISTDIR C:temp C:Temptoto.lst

Une msgbox s'affiche me disant :

Objet requis : 'wscript'

aviez-vous fait l'essai ?
Ai-je oublié une étape ?
Est-ce que ce code marche en environnement DOS ?
Ne doit-on pas définir une instruction de type Sub Main (ou Procédure main,
ou quelquechose d'approchant ?)

Merci encore pour tout

Gérard




"Georges MAUREL" wrote:

Re bonjour Gege
Effectivement, c'est dans le programme principal que l'on peut tester les
paramètre passés
Voici donc le code rectifié. J'ai aussi corrigé le fait que vous aviez omis
les " sur toutes les chaines de caractères

set objargs = wscript.arguments
nbargument = objArgs.Count

if nbargument2 then
wscript.echo "Veuillez indiquer le répertoire et le nom du fichier de
sortie"
wscript.quit
else
v_repertoire = trim(objArgs(0))
v_fichier_sortie = trim(objArgs(1))
ListDir v_repertoire, v_fichier_sortie
end if

Sub ListDir(v_repertoire, v_fichier_sortie)

Const ForReading = 1, ForWriting = 2

Dim path, fso, f, file, f1, Myfile, rep
if right(v_repertoire,1)<>"" then
v_repertoire = v_repertoire + ""
end if
path=v_repertoire
Set fso = CreateObject("Scripting.FileSystemObject")

Set MyFile = fso.CreateTextFile(v_fichier_sortie, True)
Set f = fso.GetFolder(path)
Set fc = f.Files
For Each f1 in fc
v_name = path & f1.name

wscript.echo v_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

Cordialement
Georges



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

Merci Georges, j'avais déjà essayé quelque chose dans ce genre (mais
beaucoup
moins sophistiqué). J'ai donc ajouté les lignes que vous proposez, mais
quand
j'exécute le programme, j'obtiens le une fenêtre avec le message :
Nombre d'arguments ou affectation de propriété incorrects :LISTDIR

J'ai l'impression (car je ne suis novice) que cela est dû à l'appel de la
procédure Listdir à partir de la dernière ligne. Ne faut-il pas une
procédure Main ou quelque chose comme ça ? Car si ListDir est un
sous-programme, je suppose qu'il faut un programme principal qui lui passe
les paramètre.
J'ai oublié de vous dire que ce programme .EXE est invoqué dans une
fenêtre
DOS

Merci encore

Gégé

Voici l'ensemble de mon programme avec vos modifications.

Sub ListDir(p_repertoire, p_fichier_sortie)
Const ForReading = 1, ForWriting = 2

set objargs = wscript.arguments
nbargument = objArgs.Count

if nbargument<>2 then
wscript.echo "Veuillez indiquer le répertoire et le nom du fichier de
sortie"
wscript.quit
else
v_repertoire = objArgs(0)
v_fichier_sortie = objArgs(1)
end if

Dim path, fso, f, file, f1, Myfile, rep
path=v_repertoire
Set fso = CreateObject("Scripting.FileSystemObject")

Set MyFile = fso.CreateTextFile(v_fichier_sortie, 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




"Georges MAUREL" wrote:

Bonjour Gege,
Pour récupérer des arguments, vous pouvez utiliser l'objet arguments de
la
façon suivante

Sub Listdir(p_repertoire, p_fichier_sortier)

set objargs = wscrip.arguments

nbargument = objArgs.Count

if nbargument<>2 then
wscript.echo "Veuillez indiquer le répertoire et le nom du fichier de
sortie"
wscript.quit
else
v_repertoire = objArgs(0)
v_fichier_sortie = objArgs(1)
end if
......

Cordialement
Georges


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

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










Avatar
Georges MAUREL
Re bonjour Gege
il y a d'abord une erreur sur la ligne
if nbargument2 then
au lieu de
if nbargument<>2 then

Ensuite, sur les options de compilation, avez-vous sélectionné wscript
support dans execution style ?

Cordialement
Georges


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

Merci Georges pour votre patience. J'ai fait un copier/coller de votre
code.
Puis je l'ai compilé, puis lancé une fenêtre DOS dans laquelle j'ai entré
:

LISTDIR C:temp C:Temptoto.lst

Une msgbox s'affiche me disant :

Objet requis : 'wscript'

aviez-vous fait l'essai ?
Ai-je oublié une étape ?
Est-ce que ce code marche en environnement DOS ?
Ne doit-on pas définir une instruction de type Sub Main (ou Procédure
main,
ou quelquechose d'approchant ?)

Merci encore pour tout

Gérard




"Georges MAUREL" wrote:

Re bonjour Gege
Effectivement, c'est dans le programme principal que l'on peut tester les
paramètre passés
Voici donc le code rectifié. J'ai aussi corrigé le fait que vous aviez
omis
les " sur toutes les chaines de caractères

set objargs = wscript.arguments
nbargument = objArgs.Count

if nbargument2 then
wscript.echo "Veuillez indiquer le répertoire et le nom du fichier de
sortie"
wscript.quit
else
v_repertoire = trim(objArgs(0))
v_fichier_sortie = trim(objArgs(1))
ListDir v_repertoire, v_fichier_sortie
end if

Sub ListDir(v_repertoire, v_fichier_sortie)

Const ForReading = 1, ForWriting = 2

Dim path, fso, f, file, f1, Myfile, rep
if right(v_repertoire,1)<>"" then
v_repertoire = v_repertoire + ""
end if
path=v_repertoire
Set fso = CreateObject("Scripting.FileSystemObject")

Set MyFile = fso.CreateTextFile(v_fichier_sortie, True)
Set f = fso.GetFolder(path)
Set fc = f.Files
For Each f1 in fc
v_name = path & f1.name

wscript.echo v_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

Cordialement
Georges



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

Merci Georges, j'avais déjà essayé quelque chose dans ce genre (mais
beaucoup
moins sophistiqué). J'ai donc ajouté les lignes que vous proposez,
mais
quand
j'exécute le programme, j'obtiens le une fenêtre avec le message :
Nombre d'arguments ou affectation de propriété incorrects :LISTDIR

J'ai l'impression (car je ne suis novice) que cela est dû à l'appel de
la
procédure Listdir à partir de la dernière ligne. Ne faut-il pas une
procédure Main ou quelque chose comme ça ? Car si ListDir est un
sous-programme, je suppose qu'il faut un programme principal qui lui
passe
les paramètre.
J'ai oublié de vous dire que ce programme .EXE est invoqué dans une
fenêtre
DOS

Merci encore

Gégé

Voici l'ensemble de mon programme avec vos modifications.

Sub ListDir(p_repertoire, p_fichier_sortie)
Const ForReading = 1, ForWriting = 2

set objargs = wscript.arguments
nbargument = objArgs.Count

if nbargument<>2 then
wscript.echo "Veuillez indiquer le répertoire et le nom du fichier de
sortie"
wscript.quit
else
v_repertoire = objArgs(0)
v_fichier_sortie = objArgs(1)
end if

Dim path, fso, f, file, f1, Myfile, rep
path=v_repertoire
Set fso = CreateObject("Scripting.FileSystemObject")

Set MyFile = fso.CreateTextFile(v_fichier_sortie, 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




"Georges MAUREL" wrote:

Bonjour Gege,
Pour récupérer des arguments, vous pouvez utiliser l'objet arguments
de
la
façon suivante

Sub Listdir(p_repertoire, p_fichier_sortier)

set objargs = wscrip.arguments

nbargument = objArgs.Count

if nbargument<>2 then
wscript.echo "Veuillez indiquer le répertoire et le nom du fichier
de
sortie"
wscript.quit
else
v_repertoire = objArgs(0)
v_fichier_sortie = objArgs(1)
end if
......

Cordialement
Georges


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

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












Avatar
Gege
C'est encore moi Georges, merci beaucoup, ça marche beaucoup mieux mais pas
parfaitement. Si ma commande est :
DIRLIST a b

le nombre d'argument est égal à 1. J'ai légèrement modifié votre coe pour
en être sûr en
wscript.echo "Nb argument = " & objArgs.Count & ". Veuillez indiquer le
répertoire et le nom du fichier de sortie"

Par contre si je tape
DIRLIST a b c
(quel que soit c) ça marche impécablement. En fait il semble que le
nombre d'arguments passés est toujours 1 de moins que ce que l'on entre sur
la ligne de commande.

Enfin c'est pas grave, je peux faire avec en tapant n'importe quoi à la fin
(par exemple un espace suivi d'un point. Toutefois, si vous avez une
explication, je suis preneur mais je subordorre qu'il s'agit d'un bug du
compilateur.

Merci encore pour tout,

Gérard


"Georges MAUREL" wrote:

Re bonjour Gege
il y a d'abord une erreur sur la ligne
if nbargument2 then
au lieu de
if nbargument<>2 then

Ensuite, sur les options de compilation, avez-vous sélectionné wscript
support dans execution style ?

Cordialement
Georges


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

Merci Georges pour votre patience. J'ai fait un copier/coller de votre
code.
Puis je l'ai compilé, puis lancé une fenêtre DOS dans laquelle j'ai entré
:

LISTDIR C:temp C:Temptoto.lst

Une msgbox s'affiche me disant :

Objet requis : 'wscript'

aviez-vous fait l'essai ?
Ai-je oublié une étape ?
Est-ce que ce code marche en environnement DOS ?
Ne doit-on pas définir une instruction de type Sub Main (ou Procédure
main,
ou quelquechose d'approchant ?)

Merci encore pour tout

Gérard




"Georges MAUREL" wrote:

Re bonjour Gege
Effectivement, c'est dans le programme principal que l'on peut tester les
paramètre passés
Voici donc le code rectifié. J'ai aussi corrigé le fait que vous aviez
omis
les " sur toutes les chaines de caractères

set objargs = wscript.arguments
nbargument = objArgs.Count

if nbargument2 then
wscript.echo "Veuillez indiquer le répertoire et le nom du fichier de
sortie"
wscript.quit
else
v_repertoire = trim(objArgs(0))
v_fichier_sortie = trim(objArgs(1))
ListDir v_repertoire, v_fichier_sortie
end if

Sub ListDir(v_repertoire, v_fichier_sortie)

Const ForReading = 1, ForWriting = 2

Dim path, fso, f, file, f1, Myfile, rep
if right(v_repertoire,1)<>"" then
v_repertoire = v_repertoire + ""
end if
path=v_repertoire
Set fso = CreateObject("Scripting.FileSystemObject")

Set MyFile = fso.CreateTextFile(v_fichier_sortie, True)
Set f = fso.GetFolder(path)
Set fc = f.Files
For Each f1 in fc
v_name = path & f1.name

wscript.echo v_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

Cordialement
Georges



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

Merci Georges, j'avais déjà essayé quelque chose dans ce genre (mais
beaucoup
moins sophistiqué). J'ai donc ajouté les lignes que vous proposez,
mais
quand
j'exécute le programme, j'obtiens le une fenêtre avec le message :
Nombre d'arguments ou affectation de propriété incorrects :LISTDIR

J'ai l'impression (car je ne suis novice) que cela est dû à l'appel de
la
procédure Listdir à partir de la dernière ligne. Ne faut-il pas une
procédure Main ou quelque chose comme ça ? Car si ListDir est un
sous-programme, je suppose qu'il faut un programme principal qui lui
passe
les paramètre.
J'ai oublié de vous dire que ce programme .EXE est invoqué dans une
fenêtre
DOS

Merci encore

Gégé

Voici l'ensemble de mon programme avec vos modifications.

Sub ListDir(p_repertoire, p_fichier_sortie)
Const ForReading = 1, ForWriting = 2

set objargs = wscript.arguments
nbargument = objArgs.Count

if nbargument<>2 then
wscript.echo "Veuillez indiquer le répertoire et le nom du fichier de
sortie"
wscript.quit
else
v_repertoire = objArgs(0)
v_fichier_sortie = objArgs(1)
end if

Dim path, fso, f, file, f1, Myfile, rep
path=v_repertoire
Set fso = CreateObject("Scripting.FileSystemObject")

Set MyFile = fso.CreateTextFile(v_fichier_sortie, 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




"Georges MAUREL" wrote:

Bonjour Gege,
Pour récupérer des arguments, vous pouvez utiliser l'objet arguments
de
la
façon suivante

Sub Listdir(p_repertoire, p_fichier_sortier)

set objargs = wscrip.arguments

nbargument = objArgs.Count

if nbargument<>2 then
wscript.echo "Veuillez indiquer le répertoire et le nom du fichier
de
sortie"
wscript.quit
else
v_repertoire = objArgs(0)
v_fichier_sortie = objArgs(1)
end if
......

Cordialement
Georges


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

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

















Avatar
Georges MAUREL
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" a écrit dans le message de news:

C'est encore moi Georges, merci beaucoup, ça marche beaucoup mieux mais
pas
parfaitement. Si ma commande est :
DIRLIST a b

le nombre d'argument est égal à 1. J'ai légèrement modifié votre coe
pour
en être sûr en
wscript.echo "Nb argument = " & objArgs.Count & ". Veuillez indiquer
le
répertoire et le nom du fichier de sortie"

Par contre si je tape
DIRLIST a b c
(quel que soit c) ça marche impécablement. En fait il semble que le
nombre d'arguments passés est toujours 1 de moins que ce que l'on entre
sur
la ligne de commande.

Enfin c'est pas grave, je peux faire avec en tapant n'importe quoi à la
fin
(par exemple un espace suivi d'un point. Toutefois, si vous avez une
explication, je suis preneur mais je subordorre qu'il s'agit d'un bug du
compilateur.

Merci encore pour tout,

Gérard


"Georges MAUREL" wrote:

Re bonjour Gege
il y a d'abord une erreur sur la ligne
if nbargument2 then
au lieu de
if nbargument<>2 then

Ensuite, sur les options de compilation, avez-vous sélectionné wscript
support dans execution style ?

Cordialement
Georges


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

Merci Georges pour votre patience. J'ai fait un copier/coller de votre
code.
Puis je l'ai compilé, puis lancé une fenêtre DOS dans laquelle j'ai
entré
:

LISTDIR C:temp C:Temptoto.lst

Une msgbox s'affiche me disant :

Objet requis : 'wscript'

aviez-vous fait l'essai ?
Ai-je oublié une étape ?
Est-ce que ce code marche en environnement DOS ?
Ne doit-on pas définir une instruction de type Sub Main (ou Procédure
main,
ou quelquechose d'approchant ?)

Merci encore pour tout

Gérard




"Georges MAUREL" wrote:

Re bonjour Gege
Effectivement, c'est dans le programme principal que l'on peut tester
les
paramètre passés
Voici donc le code rectifié. J'ai aussi corrigé le fait que vous aviez
omis
les " sur toutes les chaines de caractères

set objargs = wscript.arguments
nbargument = objArgs.Count

if nbargument2 then
wscript.echo "Veuillez indiquer le répertoire et le nom du fichier
de
sortie"
wscript.quit
else
v_repertoire = trim(objArgs(0))
v_fichier_sortie = trim(objArgs(1))
ListDir v_repertoire, v_fichier_sortie
end if

Sub ListDir(v_repertoire, v_fichier_sortie)

Const ForReading = 1, ForWriting = 2

Dim path, fso, f, file, f1, Myfile, rep
if right(v_repertoire,1)<>"" then
v_repertoire = v_repertoire + ""
end if
path=v_repertoire
Set fso = CreateObject("Scripting.FileSystemObject")

Set MyFile = fso.CreateTextFile(v_fichier_sortie, True)
Set f = fso.GetFolder(path)
Set fc = f.Files
For Each f1 in fc
v_name = path & f1.name

wscript.echo v_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

Cordialement
Georges



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

Merci Georges, j'avais déjà essayé quelque chose dans ce genre (mais
beaucoup
moins sophistiqué). J'ai donc ajouté les lignes que vous proposez,
mais
quand
j'exécute le programme, j'obtiens le une fenêtre avec le message :
Nombre d'arguments ou affectation de propriété incorrects
:LISTDIR

J'ai l'impression (car je ne suis novice) que cela est dû à l'appel
de
la
procédure Listdir à partir de la dernière ligne. Ne faut-il pas une
procédure Main ou quelque chose comme ça ? Car si ListDir est un
sous-programme, je suppose qu'il faut un programme principal qui lui
passe
les paramètre.
J'ai oublié de vous dire que ce programme .EXE est invoqué dans une
fenêtre
DOS

Merci encore

Gégé

Voici l'ensemble de mon programme avec vos modifications.

Sub ListDir(p_repertoire, p_fichier_sortie)
Const ForReading = 1, ForWriting = 2

set objargs = wscript.arguments
nbargument = objArgs.Count

if nbargument<>2 then
wscript.echo "Veuillez indiquer le répertoire et le nom du fichier
de
sortie"
wscript.quit
else
v_repertoire = objArgs(0)
v_fichier_sortie = objArgs(1)
end if

Dim path, fso, f, file, f1, Myfile, rep
path=v_repertoire
Set fso = CreateObject("Scripting.FileSystemObject")

Set MyFile = fso.CreateTextFile(v_fichier_sortie, 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




"Georges MAUREL" wrote:

Bonjour Gege,
Pour récupérer des arguments, vous pouvez utiliser l'objet
arguments
de
la
façon suivante

Sub Listdir(p_repertoire, p_fichier_sortier)

set objargs = wscrip.arguments

nbargument = objArgs.Count

if nbargument<>2 then
wscript.echo "Veuillez indiquer le répertoire et le nom du
fichier
de
sortie"
wscript.quit
else
v_repertoire = objArgs(0)
v_fichier_sortie = objArgs(1)
end if
......

Cordialement
Georges


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

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



















Avatar
Gege
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
Georges MAUREL
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
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











1 2