BATCH: Findstr

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Brainstorm, 6. Oktober 2007 .

Schlagworte:
  1. 6. Oktober 2007
    Hi,

    folgendes Problem mit einem BATCH Script:
    Ich möchte mir mit dem Befehl
    Code:
    ipconfig | findstr "Ethernet Adapter"
    den Name der Netzwerkverbindung ausgeben lassen zur späteren Benutzung im Script.
    Das ist normal kein Problem da immer nur eine Netzwerkverbinung (also Adapter) in einem PC vorhanden ist aber leider mit unterschiedlichen Bezeichnungen eben. Halt z.B. "LAN-Verbindung 1", "LAN-Verbindung 2" usw.

    Das Problem ist nur, dass die Ausgabe dann in etwa so aussieht:
    Code:
    Ethernet Adapter LAN-Verbindung:
    Ich möchte jedoch nur das "LAN-Verbindung" rausziehen und als Variable benutzen.

    Irgendwelche Ideen ?

    Mfg

    Brainstorm
     
  2. 6. Oktober 2007
    AW: BATCH: Findstr

    Leider ist die String Manipulation in Windows Batch Scripten sehr eingeschränkt. Es sollte aber möglich sein die Ausgabe zuerst in eine Variable zu schreiben und dann mittels %variable:~start,length% den benötigten Teil des Strings aus der Variable zu ziehen.

    Siehe dazu auch:
    http://homepages.slingshot.co.nz/~dorrington/batchfiles/strings.htm
     
  3. 6. Oktober 2007
    AW: BATCH: Findstr

    Moin

    Man kann eine String per Batch aufteilen, indem man Trennzeichen(delim) bestimmt...
    Die einzelnen Stücke heißen Token...
    Hier gibt's eine Beschreibung.
    Die Frage ist natürlich nur ob man per Batch alle möglichen Strings vorhersehen kann...
    z.B. bei mir(Win2k) lautet die Ausgabe:

    Wieso schreibst du nicht ein richtiges kleines Programm in einer Hochsprache?

    Da gibt's dann bestimmt einfachere Möglichkeiten den Namen der Verbindung rauszukriegen...

    //
    Also: Ich hab mal ein kleines Workaround gemacht, das davon ausgeht, dass die Namen der Verbindungen in der Registry in diesem Pfad:
    HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Network
    irgendwo in einem Unterschlüssel gespeichert sind

    Bei mir steckte der Name in einem String mit dem Titel "Name".
    Also hab ich eine kleine Batch geschrieben ^^

    Code:
    @echo off
    set REGFILE=%TEMP%\regprt.reg
    set REGFOLDER=HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Network
    
    regedit /e %REGFILE% %REGFOLDER%
    
    set STRFILE=%TEMP%\strfile.txt
    
    type %REGFILE% | find """Name""=""" >> %STRFILE%
    
    del %REGFILE%
    set REGFILE=
    set REGFOLDER=
    
    set OUTFILE=%TEMP%\out.txt
    
    FOR /F "tokens=2 delims==" %%a in (%STRFILE%) do echo.%%a >> %OUTFILE%
    
    del %STRFILE%
    Eigentlich müsste alles klar sein, besonders die vorletzte Zeile...(nach der Lektüre meines Links^^)

    Rauskommt eine Datei(%OUTFILE%) mit dem Inhalt
    Ich geh mal davon aus, dass sich unter WinXP an der Position des Strings in der Registry nix geändert hat...
    Ansonsten kann man unter WinXP anstatt Regedit auch REG benutzen....

    (Mein Gott war mir langweilig....^^)
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.