Bonjour à tous,
Je rencontre une problématique d'encodage des caractères avec une variable contenant le résultat d'une commande wmic et j'en appelle à vos lumières pour m'éclairer
Je souhaite faire un script qui va récupérer le "friendly name" de l'interface réseau active, mettre ce résultat dans une variable pour s'en resservir ensuite avec d'autres commandes.
J'arrive à faire ce que je veux mais mon problème est que ce résultat n'a pas la même valeur au niveau du caractère accentué selon que je l'affiche (via echo) ou que je la réutilise.
En effet un echo va me ressortir "Connexion au réseau local" tandis que réutiliser la variable dans une commande netsh prend la valeur "Connexion au r‚seau local" (et je reçois donc un message de syntaxe incorrecte confirmé en redirigeant la sortie dans un fichier texte)
Je suis loin d'être à l'aise avec les scripts et des optimisations sont certainement possibles mais voici le code que j'écris :
Voici donc l'output du script, la première ligne étant le résultat de l'echo, la seconde du netsh:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 REM on échappe le pipe avec le circonflexe pour prise en charge dans le script REM on exclue les lignes ressortant les interfaces réseau des machines virtuelles locales, des interfaces wifi et bluetooth, des interfaces vpn (/v pour exclure /i pour ignorer la casse) REM on supprimes les lignes vides de la sortie (/v pour exclure /r pour interpreter la chaine comme une expression régulière) REM on place le résultat de la commande dans une variable nic @echo off cls for /F "tokens=* delims==" %%A in ('wmic nic where "NetConnectionStatus=2" get NetConnectionID ^| more +1 ^| findstr /iv virtual ^| findstr /vi "sans fil" ^| findstr /vi wireless ^| findstr /vi vpn ^| findstr /vi tooth ^| findstr /rv "^$"') do set "nic=%%A" echo %nic% netsh interface ip set address "%nic%" dhcp pause
Je pourrais inscrire en dur le nom de l'interface réseau et cela fonctionne mais ma volonté est que le script soit le plus dynamique possible, adaptable avec des nomenclatures d'interface en anglais.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Connexion au réseau local La syntaxe du nom de fichier, de répertoire ou de volume est incorrecte.
Merci d'avance pour toutes les pistes et explications que vous pourriez apporter à mon interrogation.![]()
Partager