Bonjour tout le monde j'ai besoin d'aide,
Nous avons devons lancer une connexion wan (windows 8.1) en utilsant la commande
RunWait(@ComSpec & " /c netsh mbn connect interface=""" & $netname & """ connmode=name name=""" & $Provider & """")
Cela fonctionne, normalement par défaut interfacename = Haut débit mobile, mais des fois Haut débit mobile 2 (voir 3,4,5,...)
pour Provider même type de soucis, en règle générale on à Orange F, mais cela peut être par moment Orange F 2 (voir 3,4,5,...)
Pour récupérer ces informations
interfaces: netsh mbn show interface cela donnera par exemple en commande MSdos
C:>netsh mbn show interface
Le système dispose d'une interface :
Nom : Haut débit mobile 2
Description : Sierra Wireless EM7345 4G LTE #2
GUID : {2AD62A87-508F-4645-913F-AB0EACE697ED}
Adresse physique : 00:aa:00:4d:00:01
État : pas connecté
Type d'appareil : L'appareil haut débit mobile est incorporé dans le
système.
Classe cellulaire : GSM
ID de l'appareil : 013937009256056
Fabricant : Sierra Wireless Inc.
Modèle :
Version de micrologiciel : FIH7160_V1.2_WW_01.1442.11
Nom de fournisseur : Orange F
Itinérance : pas d'itinérance
Signal : 35%
RSSI / RSCP : 11 (-91 dBm)
provider: netsh mbn show profile cela donnera par exemple en commande MSdos
C:>netsh mbn show profile
Profils sur l'interface Haut d‚bit mobile 2:
-------------------------------------
Orange F 5
Donc le but est de récupérer Haut débit mobile 2 et Orange F 5 pour les passer dans des variables mais la vraiment je cale.
Help me please.
Merci d'avance.
Olivier
Récupération d'un résultat d'une commande MS DOS dans une variable
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
- ZDS
- Membre émérite
- Messages : 554
- Enregistré le : jeu. 10 juin 2010 10:35
- Localisation : 22300 Cul-d'chouette Langue-de-vache
- Status : Hors ligne
Re: Récupération d'un résultat d'une commande MS DOS dans une variable
Bonjour Olivier,
Afin de récupérer les données en sortie de ta commande, il faut que tu utilises StdoutRead, qui te permet de lire la sortie standard d'un process :Et dans le cas d'un retour sans erreur, tu peux traiter le texte reçu avec des regexp : Je te laisse tester, je n'ai pas d'environnement sous la main pour vérifier.
A bientôt !
Afin de récupérer les données en sortie de ta commande, il faut que tu utilises StdoutRead, qui te permet de lire la sortie standard d'un process :
Code : Tout sélectionner
Local $cmd = @ComSpec & " /c netsh mbn connect interface=""" & $netname & """ connmode=name name=""" & $Provider & """"
Local $pid = Run($cmd, Default, @SW_HIDE, $STDOUT_CHILD)
ProcessWaitClose($pid)
Local $output = StdoutRead($pid)
Code : Tout sélectionner
Local $pattern = "Nom : ([^\n]+?)\n"
A bientôt !
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
- ZDS
- Membre émérite
- Messages : 554
- Enregistré le : jeu. 10 juin 2010 10:35
- Localisation : 22300 Cul-d'chouette Langue-de-vache
- Status : Hors ligne
Re: Récupération d'un résultat d'une commande MS DOS dans une variable
Voila, j'ai pu tester sur un pc avec Autoit, et voici un bout de code qui devrait t'aider :Dans l'exemple ci-dessus, $cmd liste tous les fichiers du répertoire où est exécuté le script, et $pattern isole uniquement le premier fichier au3 trouvé. A toi de tester avec ta propre commande et ton propre pattern... N'ayant pas les interfaces pour exécuter tes commandes netsh, je ne peux que t'aiguiller.
Code : Tout sélectionner
#include <Constants.au3>
Local $cmd = 'DIR "' & @ScriptDir & '\*.*" /B /A-D /S'
Local $folder = @ScriptDir
Local $pattern = "\\(.*?)\.au3"
Local $result = getRegexpFromCmd($cmd, $folder, $pattern)
MsgBox(0, @error, """"&$result&"""")
Func getRegexpFromCmd($cmd, $folder, $pattern = "", $array = False)
Local $pid = Run(@ComSpec & " /c "&$cmd, $folder, @SW_HIDE, $STDOUT_CHILD)
If @error Then Return SetError(1, 0, "") ; ERREUR: Commande incorrecte
Local $timeout = ProcessWaitClose($pid, 15)
If @error Or $timeout = 0 Then Return SetError(2, 0, "") ; ERREUR: Exécution trop longue
Local $output = StdoutRead($pid)
If @error Or @extended = 0 Then Return SetError(3, 0, "") ; ERREUR: Pas de données sur la sortie standard
If $pattern = "" Then Return $output ; Si pas de pattern, retourne le resultat de la sortie standard
Local $matches = StringRegExp($output, $pattern, 1)
If @error Then Return SetError(4, 0, "") ; ERREUR: Aucun résultat correspondant au pattern
If $array Then Return $matches ; Si $array, retourne tous les résultats
Return StringStripCR($matches[0]) ; Retourne le premier résultat
EndFunc
- Pour récupérer $netname :
- Local $cmd = 'netsh mbn show interface'
- Local $pattern = "Nom : ([^\n]*?)\n"
- pour récupérer $provider :
- Local $cmd = 'netsh mbn show profile'
- Local $pattern = "---\n([^\n]*?)\n?$"
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Re: Récupération d'un résultat d'une commande MS DOS dans une variable
Bonjour,
Merci de ton retour, je teste ça au plus tôt ^^
Olivier
Merci de ton retour, je teste ça au plus tôt ^^
Olivier