Récupérer valeur dir en vbs

Récupérer valeur dir en vbs - VB/VBA/VBS - Programmation

Marsh Posté le 17-06-2012 à 17:29:44    

Bonjour,
Existe t'il de récuperer par la commande dir le nombre de fichiers touvés?
Exemple:  
Imaginons que je fasse dans une fenêtre dos C:\Users\Nicolas\Desktop\VBS\*.txt et qu'il me renvoie 3 fichiers
comment puis-je en vbs récupérer le nombre de fichier.
En vbs la commande dir est exécuter en mode caché par :
Set oExec = WshShell.Exec("cmd /k dir C:\Users\Nicolas\Desktop\VBS\*.txt " )
Mais comment faire pour ensuite récupérer le nombre de fichiers trouvés????
 
Merci de vos réponses!
Nicolas

Reply

Marsh Posté le 17-06-2012 à 17:29:44   

Reply

Marsh Posté le 17-06-2012 à 17:52:41    

Tu as la réponse dans ton post, et vu que je sais bien que c'est plus compliqué que le foreach, j'ai mis une règle de parsing du stdout de la commande dir (expression régulière), et tu n'as qu'à compter les lignes qui "matchent"
 
Regarde donc dans ton post sur la lecture à distance ;)
 
http://forum.hardware.fr/hfr/Progr [...] 7265_1.htm

Message cité 1 fois
Message édité par dreameddeath le 17-06-2012 à 17:53:05
Reply

Marsh Posté le 17-06-2012 à 20:53:07    

dreameddeath a écrit :

Tu as la réponse dans ton post, et vu que je sais bien que c'est plus compliqué que le foreach, j'ai mis une règle de parsing du stdout de la commande dir (expression régulière), et tu n'as qu'à compter les lignes qui "matchent"
 
Regarde donc dans ton post sur la lecture à distance ;)
 
http://forum.hardware.fr/hfr/Progr [...] 7265_1.htm


 
Euuh merci de la réponse dreameddeath.
Mais je dois t'avouer je n'ai pas tout compris.
Si je mets MsgBOX parts.count avant :
        if(parts.count>0) then
il m'affiche une série de 0 et de 1 puis de 0 avant d'afficher la liste des fichiers.
J'ai dû ratter qqchose mais quoi???

Reply

Marsh Posté le 17-06-2012 à 22:45:05    

en fait shell.execute renvoie un stdout (très connu dans le monde unix mais aussi pour les "anciens" de ms-dos) : x'est la chaîne de caractère qu'affiche le programme exécuté dans le mode ligne de commande.
 
C'est cette sortie standard qui est "post-traitée" par la boucle, qui la lit ligne par ligne ( la méthode readline )
 
Le problème, c'est que si tu regardes la sortie standard, cmd renvoie en plus de la liste des fichiers un certain nombre de lignes "parasites", qu''il faut filtrer : c'est but de l'expression rationnelle (variable parseLine). Elle valide le format de la ligne et en extrait des "bouts" (les éléments entre parenthèse dans le "pattern" ).
 
Si count > 0 alors ça "match" (correspond) et donc après, il faut en faire ce que tu veux (compter, valider la date :), post traiter, etc...)
 
La notion d'expression régulière est bien documentée sur le net (google est ton ami)
 
En espérant que ça aide à comprendre....

Message cité 1 fois
Message édité par dreameddeath le 17-06-2012 à 22:46:27
Reply

Marsh Posté le 18-06-2012 à 00:54:35    

dreameddeath a écrit :

en fait shell.execute renvoie un stdout (très connu dans le monde unix mais aussi pour les "anciens" de ms-dos) : x'est la chaîne de caractère qu'affiche le programme exécuté dans le mode ligne de commande.
 
C'est cette sortie standard qui est "post-traitée" par la boucle, qui la lit ligne par ligne ( la méthode readline )
 
Le problème, c'est que si tu regardes la sortie standard, cmd renvoie en plus de la liste des fichiers un certain nombre de lignes "parasites", qu''il faut filtrer : c'est but de l'expression rationnelle (variable parseLine). Elle valide le format de la ligne et en extrait des "bouts" (les éléments entre parenthèse dans le "pattern" ).
 
Si count > 0 alors ça "match" (correspond) et donc après, il faut en faire ce que tu veux (compter, valider la date :), post traiter, etc...)
 
La notion d'expression régulière est bien documentée sur le net (google est ton ami)
 
En espérant que ça aide à comprendre....


 

dreameddeath je t'adore!
merci pour tes aides et réponses!
c'est tout à fait mon avis : google est mon ami!!!
sauf que tu trouves de tout et rien; et ce n'est qu'au détour d'une autre recherche que tu trouves ce que tu cherches depuis x semaines; mois ou années!
Merci en tout cas du temps consacré à me répondre!
Je me debrouille pas mal en vba; mais vbs est un peu nouveau pour moi!
Mais comme je dis toujours "aide toi et le ciel t'aidera..."
Toutefois un peu d'aide via des forums peu aider à "faire un grand pas..."
Merci en tout cas de ton aide!
Nicolas

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed