none
Batch Skript zum Auslesen einer Datei

    Frage

  • Heyho,

    ich weiß nicht so recht wo ich die Frage stellen soll, daher stelle ich sie einfach hier...
    Ich bin zZ dabei für die Arbeit ein Skript zu schreiben um einen Prüfablauf zu vereinfachen. Ich habe bisher noch nicht wirklich mit Batch Dateien gearbeitet und dem entsprechend recht wenig Erfahrung.

    Das Skript ist bis auf einen Punkt fertig wo ich nicht weiter komme...
    Am Anfang des Skriptes wird eine MAC-Adresse eines Gerätes eingetragen und das Skript soll jetzt zu der MAC-Adresse aus einer Datei einen dazu gehörigen Schlüssel auslesen.
    Die Datei ist wie folgt aufgebaut:

    MAC-Adresse 1; Schlüssel
    MAC-Adresse 2; Schlüssel
    etc.

    Wie kann ich das jetzt vernünftig in das Batch Skript übernehmen?
    Es soll die MAC-Adresse eingegeben werden, dann wird die Datei gesucht und der passende Schlüssel aus der Datei extrahiert, sodass dieser weiter verwendet werden kann.

    Danke für die Hilfe

    Gruß
    Daniel

    Montag, 25. August 2014 09:31

Antworten

  • Hallo,

    dieses Batch-Script sollten den gewünschten Effekt haben:

    @echo off
    
    set search_file=test.txt
    
    rem Die mac die gesucht wird
    set search_mac=%1
    
    for /F "tokens=1" %%i in ('findstr ^%search_mac% %search_file%') do set found=%%i
    
    rem Die Zeile in der die Mac gefunden wurde
    echo line=%found%
    
    for /F "delims=; tokens=2" %%c in ("%found%") do set key=%%c
    
    rem %key% enthält den entsprechenden key
    echo key=%key%

    Viele Grüße

    MSDN-Entwickler-Hotline für MSDN Online Deutschland

    Disclaimer:
    Bitte haben Sie Verständnis dafür, dass wir hier auf Rückfragen gar nicht oder nur sehr zeitverzögert antworten können.
    Bitte nutzen Sie für Rückfragen oder neue Fragen den telefonischen Weg über die MSDN-Entwickler-Hotline: http://www.msdn-online.de/Hotline

    Es gelten für die MSDN-Entwickler-Hotline und dieses Posting diese Nutzungsbedingungen , Hinweise zu Markenzeichen, Informationen zur Datensicherheitsowie die gesonderten Nutzungsbedingungen für die MSDN-Entwickler-Hotline.

    • Als Antwort markiert Kampino89 Donnerstag, 4. September 2014 07:36
    Mittwoch, 27. August 2014 13:56

Alle Antworten

  • Hallo,

    dieses Batch-Script sollten den gewünschten Effekt haben:

    @echo off
    
    set search_file=test.txt
    
    rem Die mac die gesucht wird
    set search_mac=%1
    
    for /F "tokens=1" %%i in ('findstr ^%search_mac% %search_file%') do set found=%%i
    
    rem Die Zeile in der die Mac gefunden wurde
    echo line=%found%
    
    for /F "delims=; tokens=2" %%c in ("%found%") do set key=%%c
    
    rem %key% enthält den entsprechenden key
    echo key=%key%

    Viele Grüße

    MSDN-Entwickler-Hotline für MSDN Online Deutschland

    Disclaimer:
    Bitte haben Sie Verständnis dafür, dass wir hier auf Rückfragen gar nicht oder nur sehr zeitverzögert antworten können.
    Bitte nutzen Sie für Rückfragen oder neue Fragen den telefonischen Weg über die MSDN-Entwickler-Hotline: http://www.msdn-online.de/Hotline

    Es gelten für die MSDN-Entwickler-Hotline und dieses Posting diese Nutzungsbedingungen , Hinweise zu Markenzeichen, Informationen zur Datensicherheitsowie die gesonderten Nutzungsbedingungen für die MSDN-Entwickler-Hotline.

    • Als Antwort markiert Kampino89 Donnerstag, 4. September 2014 07:36
    Mittwoch, 27. August 2014 13:56
  • Hallo Tobias,

    vielen Dank :)

    Ich teste es gleich nächsten Dienstag mal und melde mich dann nochmal :))
    Wenn es klappt werden sich meine Kollegen hoffentlich freuen :)

    Gruß
    Daniel

    Donnerstag, 28. August 2014 21:11
  • Hallo,

    ich habe den Codeschnipsel nun eingebaut:

    set search_file=%Desktop%cvb-licenses.dat
    
    echo %search_file%
    
    rem .lic-Datei erstellen
    set search_mac=00-01-0D-12-85-DF
    for /F "tokens=1" %%i in ("findstr %search_mac% %search_file%") do set found=%%i
    
    rem Die Zeile in der die Mac gefunden wurde
    echo line=%found%
    
    for /F "delims=; tokens=2" %%c in ("%found%") do set key=%%c
    
    rem %key% enthält den entsprechenden key
    echo key=%key%

    Aber ich erhalte immer nur die Ausgabe

    line=findstr
    key=

    obwohl die MAC in der Datei vorhanden ist :(


    Dienstag, 2. September 2014 07:32
  • Hallo,

    Das Problem war, dass sie die einfachen Anführungsstriche beim ersten for durch doppelte Anführungsstriche ersetzt haben. Ich habe das Beispiel von oben hier nochmal auf ihren Fall umgeschrieben und auch einige andere Sachen verbessert:

    set search_file=%Desktop%cvb-licenses.dat
    
    echo %search_file%
    
    rem Variablen zurücksetzen
    set found=
    set key=
    
    rem .lic-Datei erstellen
    set search_mac=00-01-0D-12-85-DF
    for /F "tokens=1" %%i in ('findstr "%search_mac%;" %search_file%') do set found=%%i
    
    rem Die Zeile in der die Mac gefunden wurde
    echo line=%found%
    
    for /F "delims=; tokens=2" %%c in ("%found%") do set key=%%c
    
    rem %key% enthält den entsprechenden key
    echo key=%key% 

    Viele Grüße

    MSDN-Entwickler-Hotline für MSDN Online Deutschland

    Disclaimer:
    Bitte haben Sie Verständnis dafür, dass wir hier auf Rückfragen gar nicht oder nur sehr zeitverzögert antworten können.
    Bitte nutzen Sie für Rückfragen oder neue Fragen den telefonischen Weg über die MSDN-Entwickler-Hotline: http://www.msdn-online.de/Hotline

    Es gelten für die MSDN-Entwickler-Hotline und dieses Posting diese Nutzungsbedingungen , Hinweise zu Markenzeichen, Informationen zur Datensicherheitsowie die gesonderten Nutzungsbedingungen für die MSDN-Entwickler-Hotline.

    Mittwoch, 3. September 2014 11:54
  • Hallo,

    danke für die Antwort. Hab das Skript gestern noch lauffähig bekommen und nun läuft es wie gewünscht :)

    Danke für die Hilfe!

    Donnerstag, 4. September 2014 07:36