Brauche Hilfe..

  • Guten Tag zusammen..

    Nun, ich hab schon alle Seiten durchforstet und nix gefunden, was mir weiterhelfen könnte. Ich bin im 2. Lehrjahr in der Abteilung Systeminformatik beschäftigt und habe einen Auftrag bekommen, ein AutoIT Script zu erstellen.
    Ich sitze nun den ganzen Tag schon hier, und kapiere das einfacht nicht :S. Es ist das erste Mal das ich mit AutoIT arbeite. Es ist, für mein Verhältnis, ein grösseres Script, das ich zu erstellen habe.

    Ich wäre froh, wenn mir da jemand helfen könnte, vll. eher per PM, da es sehr lange dauern könnte :S.

    grüsse

  • Erstmal hallo ^^
    natürlich wird dir hier geholfen das hier ist das beste forum das es gibt und hier wird meist so schnell geantwortet das du nichtmal eine rauchen kanns.
    Aber ich sage gleich etwas vorweg :
    sag uns was du machen sollt wie du gedenkst es umzusetzen schikk uns dein bisherigen script und fürn anfang geh auf wikipedia.de und such das autoit tutorial (wenns das noch gibt) das is nähmlich das beste fürn anfang


    Edit\\ mist Xeno haben wir wohl gleichzeitig geschrieben...

  • Also..es geht im grossen und ganzen etwa um das:

    Schlussendlich muss das AutoIT Script als .exe eigenständig ablaufen, und gewisse Verzeichnisse löschen.
    Es bestehen etwa 175 Gast-Accounts, welche immer regelmässig in Kursen benutzt werden. In der einen Woche z.b. die Accounts ECDL00 bis ECDL20.
    In der nächsten Woche dann von ECDL 21 bis ECDL 45 etc. Und nun soll per Eingabemaske der erste Account eingegeben werden und dann der zweite und dann wird bei diesem Range die Verzeichnisse gelöscht bzw. die Daten, welche in den Kursen dort abgelegt wurden, damit die nächshten Kursbesucher diese Accounts wieder benutzen können.
    Fehlermeldungen, falls z.b. geschrieben wird ECDL176 sollen angezeigt werden (also wenn es über 175 ist), oder wenn kein Wert eingegeben wird. etc.
    Und Nach dem cleanen soll eine Zusammenfassung angezeigt werden, welche Verzeichnisse und Anzahl Dateien welche gelöscht wurden vom 1. bis zum letzen Account.
    War das verständlich genug? Wie gesagt, ich habe keine Ahnung, wie das funktioniert. Konnte gerade mal InputBox und MsgBox erstellen etc. Nicht gerade viel..In Sachen programmieren bin ich vor allem nicht der Hellste. :P

  • Hallo,
    ich schließe mich meinen Vorrednern an (bis darauf das ich Nichtraucher bin :rofl: ). Allerdings möchte ich noch hinzufügen das Threadtitel wie "Ich brauche Hilfe" oder: "Es Funktioniert nicht" oder noch schlimmer: "HILFE!!!!!!" nicht gerade zur Lösung des Problems beitragen. Auch ist eine umfassende Problembeschreibung natürlich gerne gesehen ;)
    Edit: Oh, du hast ja schon wieder gepostet :D
    Das Problem scheint für mich sehr einfach zu sein, was mir aus dem Stegreif an Befehlen einfällt, die benötigt werden: For-Schleife, alles (je nach vorliebe) über Input-Controls oder Up-/Down-Controls, (Demensprechend auch GUIs(Wie man Controls ausliest, weitere Controls(Buttons...))), Für das Abfragen der Daten: If, Select und Switch, Löschen von Ordnern: DirRemove, Für Dateien: FileDelete, Und andere Grundkenntnisse(Wie das mit Variablen, Rückgabewerten, Makros usw. geht, Wie man Funktionen benutzt..).
    Sieht jetzt zwar nach viel aus, ist es aber gar nicht ;):)
    Das was ich jetzt persöhnlich am schwierigsten finde ist diese Statistik, durch diese kannst du bei DirRemove nicht einfach das Flag 1 setzen sondern musst dich immer von einer Datei in einem Verzeichnis "hocharbeiten" und bei "Abzweigen" immer erst da bis zur UnterstenDatei dort, dann wieder "hocharbeiten" und so weiter.

    Projekte: Keine größeren (und fertigen)
    Gegen Internetzensur:
    https://epetitionen.bundestag.de/index.php?acti…s;petition=3860
    (Zeichnungsfrist abgelaufen)
    __________________________________________________________________________________________________________________________________
    Dieser Beitrag wurde bereits 264 mal editiert, zuletzt von »Fast2« (30. Februar 2009, 12:99)

    Einmal editiert, zuletzt von Fast2 (20. Mai 2008 um 16:31)

  • Also ich musste heute anfangen, morgen haben wir keine Zeit (unsere Abteilung geht an die Orbit iEX in Zürich). Do und Fr habe ich Schule, Montag haben wir Ausflugstag und dann noch Dienstag Zeit und Mittwoch abgeben..Also inner Woche

  • Hallo,
    ich schließe mich meinen Vorrednern an (bis darauf das ich Nichtraucher bin :rofl: ). Allerdings möchte ich noch hinzufügen das Threadtitel wie "Ich brauche Hilfe" oder: "Es Funktioniert nicht" oder noch schlimmer: "HILFE!!!!!!" nicht gerade zur Lösung des Problems beitragen. Auch ist eine umfassende Problembeschreibung natürlich gerne gesehen ;)

    Geb ich dir Recht. Werd nächstes Mal darauf schauen :)

  • Hier habe ich mal eine Lösung gebastelt, kannst es ja noch etwas abändern.

    Spoiler anzeigen
    [autoit]

    #include <GuiConstants.au3>
    #include <StaticConstants.au3>
    #include <File.au3>

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

    #cs
    ;~ IST FÜR DAS TESTEN ERSTELLT 176 VERZEICHNISSE MIT JE 2 DATEIEN

    For $i = 0 To 175
    if stringlen($i) = 1 then $i = "0" & $i
    DirCreate("ECDL" & $i)
    FileWrite("ECDL" & $i & "\test.txt", "Datei" & $i)
    FileWrite("ECDL" & $i & "\test2.txt", "Datei2" & $i)
    Next
    #ce

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

    ;~ ZU BEGINN DAS HAUPTVERZEICHNIS AUSWÄHLEN, SPRICH WO SICH ALLE 176 ORDNER BEFINDEN. DAS GEHT MIT DEM BUTTON VERZEICHNIS.

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

    $Form1 = GUICreate("Test", 270, 120, 193, 125)
    $Input1 = GUICtrlCreateInput("ECDL00", 25, 15, 100, 21)
    $Label1 = GUICtrlCreateLabel("-", 130, 18, 8, 17, $SS_CENTER)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $Input2 = GUICtrlCreateInput("ECDL00", 145, 15, 100, 21)
    $Input3 = GUICtrlCreateInput(@ScriptDir & "\", 25, 55, 220, 21)
    $Button1 = GUICtrlCreateButton("Löschen", 25, 90, 100, 20, 0)
    $Button2 = GUICtrlCreateButton("Verzeichnis", 145, 90, 100, 20, 0)
    GUISetState(@SW_SHOW)

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

    $Anzahlfiles = 0
    $Folders = ""

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    $mainpfad = GUICtrlRead($Input3 & "\")
    If not StringRight($mainpfad, 1) = "\" Then $mainpfad &= "\"
    $firstinput = GUICtrlRead($Input1)
    $secondinput = GUICtrlRead($Input2)
    If StringMid($firstinput, 1, 4) = "ECDL" And StringMid($secondinput, 1, 4) = "ECDL" Then ;überprüft ob die ersten 4 buchstaben ECDL sind
    $firstinput = StringTrimLeft($firstinput, 4) ;trennt ECDL ab damit nur noch nr des ordners vorhanden ist
    $secondinput = StringTrimLeft($secondinput, 4) ;trennt ECDL ab damit nur noch nr des ordners vorhanden ist
    If StringIsDigit($firstinput) And StringIsDigit($secondinput) Then ;wenn $firstinput und $secondinput nummern sind dann
    If $firstinput > 175 Or $secondinput > 175 Then ;wenn eins der beiden zahlen größer 175 ist => msgboxerror
    MsgBox(0, "Error", "Ein/Beide Ordner ist/sind größer als ECDL175!")
    ElseIf Number($firstinput) > Number($secondinput) Then ;wenn input1 größer input2 => msgboxerror
    MsgBox(0, "Error", "Der erste Wert darf nicht größer als der zweite sein!")
    Else
    For $i = $firstinput To $secondinput ;durchläuft eine schleife, start von nummer des ersten inputs bis zur nummer des zweiten inputs
    If StringLen($i) = 1 Then $i = "0" & $i ;da die ordner immer 2stellig sind, sprich 01 und nicht 1
    $filelist = _FileListToArray($mainpfad & "ECDL" & $i) ;erstellt array der files
    If @error = 1 Then ;Ordner existriert nicht, schleife beginnt von oben mit dem nächsten ordner
    ElseIf @error = 4 Then ;Ordner leer, nur der Ordner wird gelöscht
    $Folders &= "ECDL" & $i & ", "
    DirRemove($mainpfad & "ECDL" & $i)
    Else
    $Folders &= "ECDL" & $i & ", " ;hier werden die ordner, welche geleert werden, in die variable $Folders geschrieben (für statistik)
    For $j = 1 To $filelist[0] ;filelist = array, filelist[0] anzahl der files die der ordner enthält, 1 - fileslist[0] also die schleife für alle files
    FileDelete($mainpfad & "ECDL" & $i & "\" & $filelist[$j]) ;löschen der dateien
    $Anzahlfiles += 1 ;file wurde gelöscht, also dem zähler für die statistik der gelöschten dateien wird 1 addiert
    DirRemove($mainpfad & "ECDL" & $i)
    Next
    EndIf
    Next
    If $Folders <> "" And $Anzahlfiles <> "" Then
    $Folders = StringTrimRight($Folders, 2) ;hier wird das ", " abgetrennt
    MsgBox(0, "Statistik", "Folgende(r) Ordner wurden gelöscht: " & @CRLF & $Folders & @CRLF & @CRLF & "Insgesamt wurde(n) " & $Anzahlfiles & " Datei(en) gelöscht.")
    $Anzahlfiles = 0
    $Folders = ""
    Else
    MsgBox(0, "Statistik", "Diese(r) Ordner ist/sind bereits leer oder gelöscht!")
    EndIf
    EndIf
    EndIf
    Else
    MsgBox(0, "Error", "Die Ordner müssen mit ECDL beginnen!")
    EndIf
    Case $Button2
    $mainpfad = FileSelectFolder("", @HomeDrive)
    If @error Then ;wenn error dann nichts tun xD
    Else
    GUICtrlSetData($Input3, $mainpfad&"\") ;setzt in input3 den hauptpfad
    EndIf
    EndSwitch
    WEnd

    [/autoit]