Ausführung eines Skripts von 2 Bedingungen abhängig machen

  • Hallo zusammen,

    hier wieder einmal eine typische Anfängerfrage !

    Ich habe folgendes Code-Schnipsel:

    Spoiler anzeigen
    [autoit]

    #Include <Constants.au3>

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

    ; Prozessor-ID ermitteln
    Dim $strComputer, $objWMIService
    Const $wbemFlagReturnImmediately = 0x10
    Const $wbemFlagForwardOnly = 0x20
    $strComputer = "localhost"
    $objWMIService = ObjGet("winmgmts:{(RemoteShutdown)}//" & $strComputer & "\root\CIMV2")
    _Read_ProzessorID()
    Func _Read_ProzessorID()
    Local $colItems = ""
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Processor")
    For $objItem in $colItems
    Local $ProID = $objItem.ProcessorId
    MsgBox(0,'Output','Prozessor ID : ' & $ProID)
    Next
    EndFunc

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

    ; HD-Seriennummer ermitteln
    $HDID = DriveGetSerial( "c:\" )
    MsgBox(4096, "Serial Number: ", $HDID)

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

    $ProID = "ABCDEFGH"
    $HDID = "12345678"

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

    If _serial() = 1 Then
    _anweisungen()
    ElseIf _serial() = 0 Then
    MsgBox(4096, "Überprüfung fehlerhaft !", "Abbruch")
    Exit
    EndIf
    Func _serial()
    $serial1 = $ProID
    If $serial1 = "ABCDEFGH" Then
    Return 1
    Else
    Return 0
    EndIf
    $serial2 = $HDID
    If $serial2 = "12345678" Then
    Return 1
    Else
    Return 0
    EndIf
    EndFunc
    Func _anweisungen()
    MsgBox(4096, "Überprüfung erfolgreich !", "Weiter")

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

    EndFunc

    [/autoit]

    Im Klartext, ich frage in dem Skript sowohl die Prozessor-ID wie auch die Seriennummer der Festplatte ab. So kann am Rechner ein Bauteil (entweder das Motherboard oder auch die Festplatte) ausgetauscht werden, und das Skript funktioniert immer noch.

    Mein Problem ist jetzt, dass ich nicht weiss, wie ich eine funktionierende Abfrage schreiben muss, die beide Bedingungen überprüft.

    Theoretisch ist mir der Ablauf klar. Der Rückgabewert darf sowohl 2 oder auch 1 sein, aber niemals 0, weil das Skript sonst beendet wird.
    Wie kann ich jetzt beide Seriennummern hintereinander überprüfen, die beiden Rückgabewerte zusammenzählen lassen und dann anhand des Ergebnisses den weiteren Skriptablauf (Abbruch bzw. Fortsetzung) steuern. ?(

    Muss ich die Rückgabewerte jeweils in eine Variable schreiben lassen und dann addieren? :S
    Sorry, aber so ganz am Anfang tut man sich echt etwas schwer.

    Vielen Dank für Eure Unterstützung.

    Mick

    Einmal editiert, zuletzt von Mick (16. März 2008 um 22:02)

  • Typischer Fall für eine

    [autoit]

    If $check = 1 then

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

    Else

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

    EndIf

    [/autoit]

    bedingung

  • Nee, also das ist einfach eine logische ODER - Verknüpfung der Bedingungen:

    [autoit]

    If $DiskId = "123" OR $ProcId = "abc" Then
    ;your code here
    Endif

    [/autoit]

    Gruß,

    TrueMu

  • Na klar aber er hat doch selbst geschreiben er will wenn der script nicht 1 ist exit macht.

    [autoit]

    If $count = 1 then
    ;weitermachen
    Else
    Exit
    EndIf

    [/autoit]

    natürlich kann er noch "or" "and" und was weiß ich noch einbauen.

  • Nee, also das ist einfach eine logische ODER - Verknüpfung der Bedingungen:

    [autoit]

    If $DiskId = "123" OR $ProcId = "abc" Then
    ;your code here
    Endif

    [/autoit]

    Gruß,

    TrueMu


    8o Was, wirklich sooooooo einfach???

    Oh Mann, da hab ich ja wohl von hinten durch die Brust ins Auge gedacht. Hoffentlich haltet Ihr mich nicht für bekloppt, dass ich da ein Konstrukt mit Addieren von Rückgabewerten etc. stricken wollte.

    Vielen Danke für die schnelle Hilfe und Unterstützung. :thumbup:

    Mick