Hilfe bei if...then

  • Hallo!

    Ich bin neu hier habe auch gleich eine Frage (naja…eigentlich sind´s mehrere): Zurzeit schreibe ich ein Script, das die Datensicherung in unserer Firma automatisieren soll. Der Hintergrund ist dieser…der User muss immer solange vor dem PC bleiben, bis die Sicherung zu Ende ist und kann dann erst den Rechner runterfahren.
    Soweit ist das Script schon fertig…habe nur ein Verständnisproblem bei…wenn dies kommt soll er das machen (If...Then).

    Also: zum Anfang der Datensicherung können 3 verschieden Fenster auftauchen.

    - Wenn Fenster 1 auftaucht, soll das Script beendet werden (besser wäre, dass das Script es noch einmal in einer Stunde versucht…wenn es so was gibt)
    - Wenn Fenster 2 wie Fenster 1
    - Wenn Fenster 3 auftaucht, soll das Script das Fenster abarbeiten und fortfahren
    - Wenn Fenster 4 wie Fenster 1 (taucht nicht zum Anfang auf sondern mittendrin)

    Spoiler anzeigen
    [autoit]

    $Pfad = "\\192.168.0.101\AFS-Software\AFS-Kaufmann\AFS_Kaufmann.exe"
    $NL = "X:"
    $SICHERN = "\192.168.0.9\AFS Kaufmann Install\AFS Datensicherungen"
    $User = "xxxx"
    $Passwort = ""
    $Version = "8.04"
    #include <Date.au3>
    run($Pfad)
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\AFS-Software\AFS-Kaufmann\Einstellungen\SICHERN", "LSICHERN", "REG_SZ", $NL&$SICHERN); FENSTER 1...Hinweismeldung Kaufmann schon gestartet
    If WinExists("Afs_kaufmann") Then
    Sleep(1000)
    Send("{ENTER}")
    EndIf; Fenster 2...Netzwerkpfad gesperrt
    If WinExists("Netzwerkpfad gesperrt") Then
    Sleep(1000)
    Send("{ENTER}")
    EndIf ; Fenster 3...Mandant Auswählen Seite
    If WinExists("Mandantenassistent (legt eine neue Firma an oder ändert eine vorhandene)") Then
    Sleep(1000)
    Send("{TAB}")
    Sleep(1000)
    Send("{DOWN}")
    Sleep(1000)
    Send("{DOWN}")
    Sleep(1000)
    ControlClick("Mandantenassistent (legt eine neue Firma an oder ändert eine vorhandene)","OK","TBitBtn1")
    Sleep(1000)
    EndIf; Anmelden Seite...
    WinWait("Anmelden")
    Sleep(1000)
    Send($User)
    Sleep(1000)
    Send("{TAB}")
    Sleep(1000)
    Send($Passwort)
    Sleep(1000)
    Send("{TAB}")
    Sleep(1000)
    Send("{ENTER}"); AFS-Kaufmann 2007 Hauptseite
    WinWait("AFS-Kaufmann 2007 V"&$Version)
    Sleep(3000)
    Send("!f")
    Sleep(2000)
    Send("c")
    Sleep(2000)
    Send("!d")
    Sleep(2000)
    Send("t"); Fenster 4...Warnmeldung das noch User mit dem Kaufmann arbeiten
    If WinExists("Frage") Then
    Sleep(5000)
    Send("{ENTER}")
    Sleep(1000)
    Send("!d")
    Sleep(1000)
    Send("n")
    Sleep(1000)
    WinWait("Information")
    Sleep(1000)
    ControlClick("Information","&Ja","TButton2")
    EndIf; Verbindet das Netzlaufwerk DriveMapAdd($NL, "\"&$SICHERN)
    Sleep(2000); Alle User müssen den Kaufmann verlassen...OK Button
    WinWait("AFS-Kaufmann 2007")
    Sleep(1000)
    ControlClick("AFS-Kaufmann 2007","OK","TButton1"); Datensicherungs Seite Zielordner
    WinWait("Datensicherung")
    Sleep(1000)
    Send("!s"); Datensicherung beenden
    WinWait("Anmelden")
    Sleep(1000)
    ControlClick("Anmelden","Abbruch", "TBitBtn1")
    Sleep(1000); Erstellt einen Ornder (mit dem Aktuellen Datum) und verschiebt die Dateien in dieses Verzeichnis
    DirCreate($Netzlaufwerkbuchstabe&"\"&_DateTimeFormat( _NowCalc(),2))
    Sleep(10000)
    FileMove($Netzlaufwerkbuchstabe&"\*.txt", $Netzlaufwerkbuchstabe&"\"&_DateTimeFormat( _NowCalc(),2))
    FileMove($Netzlaufwerkbuchstabe&"\*.zip", $Netzlaufwerkbuchstabe&"\"&_DateTimeFormat( _NowCalc(),2)); Trennt das Netzlaufwerk wieder;
    DriveMapDel($NL); fährt den Rechner runter;
    Shutdown(4)
    Exit

    [/autoit]


    Ich habe die Stellen wo die Fenster auftauchen auch so benannt. Ich hoffe ich habe mich verständlich ausgedrückt und mir kann jemand helfen. Im Anhang ist noch ein von mir geschriebenes Script für O&O Defrag Server 8.5 unattended Installation.

    Gruß chicoray

    EDIT BugFix:

    Also mei Gutster ;) , bitte erst lesen bevor du postest. Dann wär dir aufgefallen, dass dein Code alles in einer Zeile und ohne jedes Leerzeichen stand.
    Ich hab mir die Mühe gemacht und alles umformatiert, damit es auch gelesen werden kann.

  • Könnte mir das so vorstellen, würde aber nebenbei viel mehr mitloggen damit man später alles nachvolziehen kann...ungetestet

    Spoiler anzeigen
    [autoit]


    $Pfad = "\\192.168.0.101\AFS-Software\AFS-Kaufmann\AFS_Kaufmann.exe"
    $NL = "X:"
    $SICHERN = "\192.168.0.9\AFS Kaufmann Install\AFS Datensicherungen"
    $User = "xxxx"
    $Passwort = ""
    $Version = "8.04"

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

    #include <Date.au3>

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

    _defrag()

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

    While 1
    Sleep (100)
    WEnd

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

    Func _defrag()
    AdlibDisable()
    run($Pfad)

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

    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\AFS-Software\AFS-Kaufmann\Einstellungen\SICHERN", "LSICHERN", "REG_SZ", $NL&$SICHERN)

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

    ; FENSTER 1...Hinweismeldung Kaufmann schon gestartet
    If WinExists("Afs_kaufmann") Then
    Sleep(1000)
    Send("{ENTER}")
    AdlibEnable ( "_defrag", 60000)
    elseif WinExists("Netzwerkpfad gesperrt") Then
    Sleep(1000)
    Send("{ENTER}")
    AdlibEnable ( "_defrag", 60000)
    ElseIf WinExists("Mandantenassistent (legt eine neue Firma an oder ändert eine vorhandene)") Then
    Sleep(1000)
    Send("{TAB}")
    Sleep(1000)
    Send("{DOWN}")
    Sleep(1000)
    Send("{DOWN}")
    Sleep(1000)
    ControlClick("Mandantenassistent (legt eine neue Firma an oder ändert eine vorhandene)","OK","TBitBtn1")
    Sleep(1000)
    WinWait("Anmelden")
    Sleep(1000)
    Send($User)
    Sleep(1000)
    Send("{TAB}")
    Sleep(1000)
    Send($Passwort)
    Sleep(1000)
    Send("{TAB}")
    Sleep(1000)
    Send("{ENTER}")

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

    ; AFS-Kaufmann 2007 Hauptseite
    WinWait("AFS-Kaufmann 2007 V"&$Version)
    Sleep(3000)
    Send("!f")
    Sleep(2000)
    Send("c")
    Sleep(2000)
    Send("!d")
    Sleep(2000)
    Send("t")
    Sleep (2000)
    ; Fenster 4...Warnmeldung das noch User mit dem Kaufmann arbeiten
    If WinExists("Frage") Then
    Sleep(5000)
    Send("{ENTER}")
    Sleep(1000)
    Send("!d")
    Sleep(1000)
    Send("n")
    Sleep(1000)
    WinWait("Information")
    Sleep(1000)
    ControlClick("Information","&Ja","TButton2")
    AdlibEnable ( "_defrag", 60000)
    Else

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

    ; Verbindet das Netzlaufwerk
    DriveMapAdd($NL, "\"&$SICHERN)
    Sleep(2000)

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

    ; Alle User müssen den Kaufmann verlassen...OK Button
    WinWait("AFS-Kaufmann 2007")
    Sleep(1000)
    ControlClick("AFS-Kaufmann 2007","OK","TButton1")

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

    ; Datensicherungs Seite Zielordner
    WinWait("Datensicherung")
    Sleep(1000)
    Send("!s")

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

    ; Datensicherung beenden
    WinWait("Anmelden")
    Sleep(1000)
    ControlClick("Anmelden","Abbruch", "TBitBtn1")
    Sleep(1000)

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

    ; Erstellt einen Ornder (mit dem Aktuellen Datum) und verschiebt die Dateien in dieses Verzeichnis
    DirCreate($Netzlaufwerkbuchstabe&"\"&_DateTimeFormat( _NowCalc(),2))
    Sleep(10000)
    FileMove($Netzlaufwerkbuchstabe&"\*.txt", $Netzlaufwerkbuchstabe&"\"&_DateTimeFormat( _NowCalc(),2))
    FileMove($Netzlaufwerkbuchstabe&"\*.zip", $Netzlaufwerkbuchstabe&"\"&_DateTimeFormat( _NowCalc(),2))

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

    ; Trennt das Netzlaufwerk wieder
    ;DriveMapDel($NL)

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

    ; fährt den Rechner runter
    ; Shutdown(4)
    Exit
    EndIf

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


    EndIf

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

    EndFunc

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

    EDIT BugFix: SPOILER eingefügt !!

    Einmal editiert, zuletzt von Tam0r (30. April 2007 um 23:05)

  • Hallo!

    Danke erstmal für die schnelle Antwort. Muss es erst mal Testen.

    Aber eine Frage: was bewirkt der defrag Befehl. Ist es das was ich glaube...nämlich defragmentieren oder ...???

    Habe in der Hilfe auf die schnelle nichts finden können.

    gruß chicory

    Einmal editiert, zuletzt von chicoray (30. April 2007 um 23:28)

  • ich habe dein script einfach in eine funktion namens _defrag gepackt.
    damit kann ich adlibenable nutzen adlib enable ruf nun alle 60000 millisekunden diese funktion auf, tritt also auf wenn Fenster 1,2,4 vorkommen. für ne stunde brauchst du halt dann 1000 * 60 s * 60 min
    also = 3600000

  • Hallo!

    Peinlich...Peinlich...bin Admin und habe sofort ans defragmentieren gedacht :rolleyes:

    Zwischen WinExists("Mandantenassistent (legt eine neue Firma an oder ändert eine vorhandene)") und WinWait("Anmelden") hakt es. Dort bleibt das Script stehen. Komme wie gesagt noch nicht mit IF...Then Befehlen klar. Muss ich mir mal alles in Ruhe anschauen.

    Gruß chicoray

    @ BugFix

    Danke...bin mit der Boardtechnik noch nicht so vertraut :irre:. Hatte es selbst schon versucht zu Editieren...naja...das Ergebnis hast Du ja gesehen. Sorry

    Einmal editiert, zuletzt von chicoray (30. April 2007 um 23:50)

  • if then funktioniert so

    if $Nr = 1 then
    blabla
    elseif $nr = 2 then
    blabla
    else
    blabla
    endif


    heist nichts anderes wie,

    wenn die variable ($nr) = 1 ist dann
    blabla
    oder wenn die variable ($nr) = 2 ist dann
    blabla
    wenn nichts von beidem zutrifft dann
    blabla
    endif

    Einmal editiert, zuletzt von Tam0r (1. Mai 2007 um 00:08)

  • Hallo!

    Ok. Werde ich zwar nicht sofort verstehen...aber der mensch ist ja LERNFÄHIG :rofl:

    Den Fehler habe ich auch schon gefunden:party3: ...es fehlte ein Else.

    So...muss noch weitermachen...AutoIT macht süchtig. Wenn alles rund läuft oder auch nicht...melde ich mich noch mal. Vielen dank ersteinmal für deine Hilfe.

    Big Thanks von hier nach da.

    Gruß chicoray