récupérer valeur renvoyée par commande Dos

récupérer valeur renvoyée par commande Dos - VB/VBA/VBS - Programmation

Marsh Posté le 30-07-2004 à 12:25:42    

j'ai trouvé comment exécuter une commande Dos depuis Access.  
Call Shell(Environ$("COMSPEC" ) & " /c c:\>nbtstat -a btw32115" )
 
(cette commande permet de récuperer le nom d'un utilisateur en fonction du n° de sa machine)
 
Mais :
- je ne suis pas certaine que cette façon de proceder fonctionne et que l'instruction  s'execute.
- je ne sais pas comment récupérer la valeur (chaîne de texte) renvoyée par cette commande.  
 
j'ai tenté de la coller dans un fichier texte, mais si ça marche bien dans la fenêtre de commande Dos, ça marche toujours pas depuis access.
Call Shell(Environ$("COMSPEC" ) & " /c c:\>nbtstat -a btw32116 >c:\document\toto.txt" )
 

Reply

Marsh Posté le 30-07-2004 à 12:25:42   

Reply

Marsh Posté le 30-07-2004 à 12:34:40    

c:\>nbtstat ; c'est normal le premier > ou erreur de frappe ?
Vu que c'est un caractère de redirection, vaut mieux le garder pour >c:\document\toto.txt"  
 

Reply

Marsh Posté le 30-07-2004 à 14:39:58    

c'est pire que ça : je n'y connais rien en commande Dos.
 
quand j'ouvre la fenêtre,  "c:\>" est déjà écris, j'ajoute "nbtstat -a btw32116" et je fais "entrée".
J'essaie maintenant d'executer tout ça depuis access, en VBA, mais visiblement, je m'y prend mal.
 
j'viens d'assayer :
Call Shell(Environ$("COMSPEC" ) & " /c c:\nbtstat -a btw32116 >c:\document\toto.txt" ) , donc sans la 1er >, mais ça marche pas non plus.

Reply

Marsh Posté le 30-07-2004 à 15:23:43    

J'avance doucement : j'arrive a executer la commande via un fichier .bat :
 
j'ai créé un fichier texte, écris dedans " nbtstat -a btw32116 >c:\document\toto.txt " enregistré, puis chancgé l'extension du fichier en .bat.
ensuite j'appelle le fichier .bat en VBA avec :
Shell Environ$("COMSPEC" ) & " /c C:\Document\test.bat"
 
et ça marche : les infos retournées par la commande Dos sont bien  enregistrées dans c:\document\toto.txt .
Mais, creer un fichier .bat pour chaque demande, puis le supprimer, c'est pas tres propre.
y'aurait pas plus direct ?

Reply

Marsh Posté le 30-07-2004 à 16:28:55    

Shell "cmd.exe /c netstat.exe>c:\merde.txt", vbNormalFocus
 
j'ai testé ca sous excel et ca marche ...


Message édité par iAttack le 30-07-2004 à 16:30:34
Reply

Marsh Posté le 02-08-2004 à 17:27:04    

pumpkin0312 a écrit :

j'ai trouvé comment exécuter une commande Dos depuis Access.  
Call Shell(Environ$("COMSPEC" ) & " /c c:\>nbtstat -a btw32115" )
 
(cette commande permet de récuperer le nom d'un utilisateur en fonction du n° de sa machine)
 
Mais :
- je ne suis pas certaine que cette façon de proceder fonctionne et que l'instruction  s'execute.
- je ne sais pas comment récupérer la valeur (chaîne de texte) renvoyée par cette commande.  
 
j'ai tenté de la coller dans un fichier texte, mais si ça marche bien dans la fenêtre de commande Dos, ça marche toujours pas depuis access.
Call Shell(Environ$("COMSPEC" ) & " /c c:\>nbtstat -a btw32116 >c:\document\toto.txt" )

tu veux récupérer quoi ? le nom d'utilisateur ou le nom de sa machine ? je m'écarte un peu, mais tu as les API windows qui te font ca en deux trois temps mouvement ! regarde dans ma signature; tu as celle qu'il te faut ;)

Reply

Marsh Posté le 02-08-2004 à 18:18:02    

cvb,
Le but est de savoir quel utilisateur est connecté à telle base.
Je ne veux pas passer par un table enregistrant les entrées/sorties des utilisateurs (je ne veux pas qu'ils se sentent fliqués)
Je n'ai donc pas d'autre solution, que d'interroger le fichier .ldb, dans lequel je ne trouve que le n° de machine, (le nom de l'utilisateur étant toujours "admin" )
Mais je ne peux pas connaitre par coeur tous les n° de machine et savoir à quel utilisateur il appartient.
Cette commande Dos, me permet de faire le lien.
 
iAttack,
rien à faire : la fenêtre Dos s'ouvre et se referme tres rapidement : peut-être  trop vite pour que la commande ait le temps de s'executer.  
 
y a t'il un moyen de faire une pause le temps d'executer la commande, avant de refermer la fenêtre ?

Reply

Marsh Posté le 02-08-2004 à 18:19:49    

pumpkin0312 a écrit :

cvb,
Le but est de savoir quel utilisateur est connecté à telle base.
Je ne veux pas passer par un table enregistrant les entrées/sorties des utilisateurs (je ne veux pas qu'ils se sentent fliqués)
Je n'ai donc pas d'autre solution, que d'interroger le fichier .ldb, dans lequel je ne trouve que le n° de machine, (le nom de l'utilisateur étant toujours "admin" )
Mais je ne peux pas connaitre par coeur tous les n° de machine et savoir à quel utilisateur il appartient.
Cette commande Dos, me permet de faire le lien.
 
iAttack,
rien à faire : la fenêtre Dos s'ouvre et se referme tres rapidement : peut-être  trop vite pour que la commande ait le temps de s'executer.  
 
y a t'il un moyen de faire une pause le temps d'executer la commande, avant de refermer la fenêtre ?


ok, je ne connais pas ta solution ;)

Reply

Marsh Posté le 04-10-2010 à 20:44:30    

pr recuperer la valeur d'execution d une commande dans une variable :
@echo off
setlocal enableextensions
for /f "tokens=*" %%a in (
'VER'
) do (
set myvar=%%a
)
echo/%%myvar%%=%myvar%
pause
endlocal

Reply

Sujets relatifs:

Leave a Replay

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