Externe .txt Datei

  • :rolleyes:Hallo Leute!

    Ich möchte gerne ein Scriptlein schreiben, mit welchem in der Registry ein Eintrag verändert werden kann (Geschwindigkeit und Duplexmodus).
    Es funktioniert wunderbar.
    Ich möchte nun aber eine externe .txt Datei machen, in der man dann die Daten anpassen und erweitern kann.

    Die Datei sieht etwa so aus:
    b57w2k ; RequestedMediaType ; 0
    E100B ; SpeedDuplex ; 0
    e1express ; SpeedDuplex ; 0

    Ich möchte nun durch die variable, die dann z.B. E100B ist erreichen, dass ich eine variable mit SpeedDuplex erhalte.

    Ich hoffe ihr versteht mein Vorhaben.

    Grüsse
    ManuIt :rolleyes:

  • Zitat

    Ich möchte gerne ein Scriptlein schreiben, ...

    Immer diese Schweizer mit ihren Verniedlichungsformen :tongue: :P

    Soo Spass beiseite und erstmal willkommen im Forum!

    Zu deinem Problem - schau Dir am besten mal die INI Funktionen an (meiner Meinung nach die beste Möglichkeit irgendwelche Kofigurationen per Datei zu erstellen/einzulesen/abzuändern)

    greetz olli

  • Danke erst Mal für die Antworten.

    Xenobiologist :
    Ich habe die $var1 die dann bereits als z.B. "b57w2k" definiert worden ist, wenn ich das Script laufen lasse. Nun möchte ich, dass es in der ext. Datei "Beispiel.txt" nach "b57w2k" sucht und dann auf der linie den 2. Wert ("RequestedMediaType") als $var2 definiert.

    Ist das Möglich? Wie?


    @Olilein:
    Ich benutze keine Verniedlichungsförmlein.

    So short,

    ManuIt

  • Okay, danke.

    Leider habe ich nicht rausgefunden (mit Hilfe des Wiki-Tut), was die Section u.s.w. ist.

    Code
    $var1 = IniRead(ScriptDir & "\Beispiel.ini", "???", "???", "???")

    b57w2k ; RequestedMediaType ; 0
    E100B ; SpeedDuplex ; 0
    e1express ; SpeedDuplex ; 0

    Code
    $var1 = IniRead(ScriptDir & "\Beispiel.ini", "b57w2k($var2)", "RequestedMediaType", "0")

    Stimmt das???

    So short,
    ManuIt

  • Danke Vielmals für den Link.
    Ich komm jetzt gut voran. =) =) =)

    EDIT:

    Nics.ini:

    Spoiler anzeigen

    [b57w2k]
    b57w2k=RequestedMediaType
    delay=0

    [E100B]
    E100B=SpeedDuplex
    delay=0

    [e1express]
    e1express=SpeedDuplex
    delay=0


    Spoiler anzeigen


    Leider erhalte ich eine Fehlermeldung: $speed=... Error: Error parsing function call.
    Kann mir jmd. sagen was ich ändern muss, damit es funktioniert?


    so short,

    Manu

    Einmal editiert, zuletzt von ManuIt (24. August 2007 um 15:58)

  • Danke für die Ergänzung!
    Leider bekomme ich immernoch die selbe Fehler Meldung... X(

    Edit wurde wieder gelöscht, wegen gleichzeitiger Beantwortung des Edits :D

    2 Mal editiert, zuletzt von ManuIt (24. August 2007 um 16:16)

  • Mein fehler!

    Du hsat nen parameter vergessen!
    Den "default" werd, also wenn nichts gefunden wird!

    So wäre es richtig:

    $speed = IniRead(@ScriptDir & "\Nics.ini" , $adapt ,$adapt, "0")

    Wenn es also keinen eintrag in der section $adapt mit dem schlüssel $adapt gibt, wird $speed = "0" sein!

  • Danke vielmals.
    Jetzt hab ich schon mal einen Teil Fertig.
    Ich muss jetzt nur noch die Lan-Verbindung trennen und wieder Verbinden, damit die änderung gleich "aktiv" wird.
    Und noch einige andere komplizierte Sachen...
    Omg gibt das noch Arbeit... ;( :D :D


    ;)

    EDIT:

    Hat jemand eine Idee, wie ich die Netzwerk-conection disablen und danach wieder enablen kann?

    Einmal editiert, zuletzt von ManuIt (29. August 2007 um 10:04)

  • Vielen Dank!
    Leider bin ich noch ein ziemlicher Noob.
    Wie kann ich die Function denn einbauen?
    So funktionierts nicht:

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    ;Hier werden die Variabeln definiert
    $adapt = RegRead ("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\0001\Ndi" , "Service")
    $speed = IniRead(@ScriptDir & "\Nics.ini" , $adapt , $adapt , "Error")
    $delay = IniRead(@ScriptDir & "\Nics.ini" , $adapt , "delay" , "Error")

    [/autoit] [autoit][/autoit] [autoit]

    ;Wenn der Netzwerkadapter nicht im Nics.ini vorhanden ist, erscheint diese Fehlermeldung.
    if $speed = "Error" Then
    MsgBox(0, "Der Eintrag des Netzwerkadapters " & $adapt " besteht nicht. Bitte kontaktieren Sie den Systemadministrator")
    else
    If $delay = "Error" Then
    MsgBox(0, "Der Eintrag des der Geschwindigkeit " & $speed " besteht nicht. Bitte kontaktieren Sie den Systemadministrator")
    else
    ;Nics.ini wird nach $speed durchsucht. Bei Erfolg wird das "delay" von $var1 durch den in der entsprechenden Section Wert ersetzt.
    RegWrite ("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\0001" , $speed , "REG_SZ" , $delay)
    EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ;------------------------------------------------------------------------------------------
    ; Funktion _ChangeGatewayAndBack($MY_IP, $GATEWAY_IP, $FAKE_GATEWAY_IP [,$TIMEOUT=-1])
    ;
    ; Beschreibung Trennt die Verbindung zwischen PC und Router (Netzwerk), indem man dem
    ; Netzwerkadapter kurzzeitig einen falschen Gateway zuweist.
    ; Der Adapter muss manuell konfiguriert sein.
    ;
    ; Parameter $MY_IP IP des Netzwerkadapters
    ; $GATEWAY_IP Gateway
    ; $FAKE_GATEWAY_IP falsche IP
    ; $TIMEOUT Zeitdauer bis der Standardgateway wieder aktiv wird
    ; -1 (default) 2000 ms
    ; 0 NOTAUS! Standardgateway wird NICHT zurückgesetzt
    ; n in Milisekunden (beliebig)
    ;
    ; Autor BugFix [email='bugfix@autoit.de'][/email]
    ;------------------------------------------------------------------------------------------
    #include <array.au3>
    Func _ChangeGatewayAndBack($MY_IP, $GATEWAY_IP, $FAKE_GATEWAY_IP ,$TIMEOUT=-1)
    Local $ARGATEWAY = _ArrayCreate($GATEWAY_IP, $GATEWAY_IP)
    Local $ARFAKEGATEWAY = _ArrayCreate($FAKE_GATEWAY_IP, $FAKE_GATEWAY_IP)
    Local $TIME, $EMERGENCY = 0, $strComputer = "."
    Switch $TIMEOUT
    Case -1
    $TIME = 1000
    Case 0
    $EMERGENCY = 1
    Case Else
    $TIME = $TIMEOUT
    EndSwitch
    $objWMIService = ObjGet("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2")
    $colNetCards = $objWMIService.ExecQuery _
    ("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")
    If $EMERGENCY = 0 Then
    For $objNetCard in $colNetCards
    If $objNetCard.IPAddress(0) = $MY_IP Then
    $objNetCard.SetGateways($ARFAKEGATEWAY)
    Sleep($TIME)
    $objNetCard.SetGateways($ARGATEWAY)
    ExitLoop
    EndIf
    Next
    Else
    For $objNetCard in $colNetCards
    If $objNetCard.IPAddress(0) = $MY_IP Then
    $objNetCard.SetGateways($ARFAKEGATEWAY)
    ExitLoop
    EndIf
    Next
    EndIf
    EndFunc ;==>_ChangeGatewayAndBack

    [/autoit]
  • Hi!

    Du musst den aufruf so machen:

    also da, wo die verbindung disabled werden soll:

    _ChangeGatewayAndBack($MY_IP, $GATEWAY_IP, $FAKE_GATEWAY_IP [,$TIMEOUT=-1])


    also zb:


    _ChangeGatewayAndBack("192.168.2.100", "192.168.2.1", "192.168.33.2" [,$TIMEOUT=-1])


    Daten eben anpassen! :)

  • Thx für den Tipp!
    Leider müsste z.b. die IP genau die vom aktuellen pc sein.
    Wie geht das denn?

    Einmal editiert, zuletzt von ManuIt (29. August 2007 um 13:16)

  • Ich habe beides versucht.

    Z.B.

    #include <GUIConstants.au3>
    $MY_IP = @IPAddress1
    Func _ChangeGatewayAndBack($MY_IP, "Zensiert", "192.168.2.1" , $TIMEOUT=-1)

    Ich kriege beim starten die meldung: Expected a variable in user function call.
    (bei $MY_IP,^ERROR)