2017-03-07 3 views
0

Arbeiten mit dem folgende Skript:Suche und Verwendung Netzwerkadapter Name

@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 

Ich versuche, einen Weg zu finden, den Namen der gefundenen Netzwerkadapter und die Verwendung zu extrahieren den Name (n) anstelle von „Local Bereich Verbindung ". Der Grund ist, weil nicht alle Adapter gleich benannt sind und ich versuche diese Aufgabe so weit wie möglich zu automatisieren.

Vielen Dank im Voraus für jede Hilfe, die Sie zur Verfügung stellen können.

+2

Tolle Idee ... also, was ist deine *** Frage ***? – abelenky

+0

@abelenky: Wie kann ich den Namen der gefundenen Netzwerkadapter extrahieren und diesen Namen anstelle von "LAN-Verbindung" verwenden? –

Antwort

0

Hier ist ein prägnanter Weise den Namen der Schnittstelle zu erfassen.

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

Dass sie alle zusammen

@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 

Der FOR /F Befehl wird die Ausgabe des NETSH Befehl Parsen. Es überspringt die Kopfzeilen. Es teilt dann die Ausgabe in 4 Meta-Variablen auf.

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

* Schreie * Ich möchte wissen, was es auch bedeutet! Speichert dies den Namen der angeschlossenen Schnittstelle als Variable "J"? –

+0

@ChristopherMoore, Ich habe meine Frage mit einer Erklärung aktualisiert, was der 'FOR/F'-Befehl macht. – Squashman

+0

Vielen Dank für Ihre Hilfe. Ich sehe keine Option, Sie zu PM zu schicken. Ist das nicht ein Merkmal hier? –

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

Wie wäre es mit der 'FOR/F' Option' SKIP' und ändern Sie die Tokens zu: 'TOKENS = 3 *' was alles nach dem dritten Token %% b zuweist. – Squashman

+0

@Squashman: Die Qualität meiner Antwort übersteigt bereits die Qualität der Frage. Wenn du eine bessere Antwort posten willst, mach weiter. – abelenky

+0

@abelenky: Ich entschuldige mich für die Qualität meiner Frage. Ich bin sehr daran interessiert, mehr über Batch Scripting zu lernen, aber ich habe einen spezifischen Lernstil, der es schwierig macht, Quellen zu finden, die mir helfen können. Bis jetzt habe ich nur das Reverse Engineering durchgeführt, indem ich die Skripte anderer Leute kombiniert und optimiert habe, um das zu erreichen, was ich möchte. –

Verwandte Themen