2017-03-07 1 views
0

Travailler avec le script suivant:Trouvez et réseau utiliser le nom de l'adaptateur

@echo off 
netsh interface show interface | find "Connected" 
if errorlevel 1 goto # 
netsh interface set interface "Local Area Connection" disabled 
goto end 
:# 
netsh interface set interface "Local Area Connection" enabled 
:end 

Je suis en train de trouver un moyen d'extraire le nom des cartes réseau trouvés et l'utilisation dudit nom (s) à la place de « Local Connexion de zone ". La raison en est que les adaptateurs ne sont pas tous nommés de la même manière et j'essaie d'automatiser cette tâche autant que possible.

Merci beaucoup d'avance pour toute aide que vous pouvez fournir.

+2

Bonne idée ... alors quelle est votre question ***? – abelenky

+0

@abelenky: Comment puis-je extraire le nom des cartes réseau trouvées et utiliser ces noms à la place de "Local Area Connection"? –

Répondre

0

Voici une méthode plus concise pour capturer le nom de l'interface.

for /F "skip=3 tokens=3*" %G in ('netsh interface show interface') do echo %%H 

Assembler les

@echo off 
for /F "skip=3 tokens=1,2,3* delims= " %%G in ('netsh interface show interface') DO (
    IF "%%H"=="Disconnected" netsh interface set interface "%%J" enabled 
    IF "%%H"=="Connected" netsh interface set interface "%%J" disabled 
) 
pause 

La commande FOR /F est l'analyse de la sortie de la commande NETSH. Il ignore les lignes d'en-tête. Il divise ensuite la sortie en 4 variables méta.

%%G   %%H   %%I    %%J 
Admin State State   Type    Interface Name 
------------------------------------------------------------------------- 
Enabled  Disconnected Dedicated  Wireless Network Connection 
Enabled  Connected  Dedicated  Local Area Connection 
+0

* pleure * Je veux savoir ce que ça veut dire aussi! Le nom de l'interface connectée est-il stocké sous la variable "J"? –

+0

@ChristopherMoore, j'ai mis à jour ma question avec une explication de ce que fait la commande 'FOR/F'. – Squashman

+0

Merci beaucoup pour votre aide. Je ne vois pas d'option pour vous PM. Est-ce que ce n'est pas une fonctionnalité ici? –

0
for /F "tokens=4*" %%a in ('netsh interface show interface ^| more +2') do echo %%a %%b 
+0

Pourquoi ne pas utiliser l'option 'FOR/F'' SKIP' et changer les jetons en: 'TOKENS = 3 *' qui assignera tout après le troisième jeton à %% b. – Squashman

+0

@Squashman: La qualité de ma réponse dépasse déjà la qualité de la question. Si vous voulez poster une meilleure réponse, allez-y. – abelenky

+0

@abelenky: Je m'excuse pour la qualité de ma question. Je suis très intéressé par les scripts batch, mais j'ai un style d'apprentissage spécifique qui peut rendre difficile la recherche de sources qui peuvent m'aider. Jusqu'à présent, je faisais de l'ingénierie inverse, combinant et peaufinant les scripts d'autres personnes pour obtenir ce que je veux faire. –