1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. CrazyER

Beiträge von CrazyER

  • Suche UDF _GetFilesFolder_Rekursiv.au3

    • CrazyER
    • 16. Dezember 2010 um 09:49

    danke ;o)) soo schlau war ich auch schon, nur habe ich eben nichts gefunden, deshalb frage ich ja ob es jemand zufällig noch auf der platte hat ;o)

  • Suche UDF _GetFilesFolder_Rekursiv.au3

    • CrazyER
    • 16. Dezember 2010 um 08:59

    Hallo zusammen,

    ich habe letztes Jahr mir ein Script gebaut, das ich gerade wieder ausführen wollte. Nun musste ich feststellen, das mir die UDF _GetFilesFolder_Rekursiv.au3 fehlt. Hat die zufällig jemand von euch auf der Platte liegen und weiß wo ich sie mir ziehen kann ??

    Vielen Dank im voraus.

    Grüße
    CrazyER

  • USB Mail Notifier

    • CrazyER
    • 13. Dezember 2010 um 13:09

    Hallo zusammen,

    ich hab folgende Idee, weiß nur noch nicht ob ich es mit AutoIT umsetzen kann. Vielleicht hat von euch ja jemand einen Tipp.

    Ich hab mir übers INet ein USB Mail Notifier bestellt, das sieht so aus [Blockierte Grafik: http://www.geekalerts.com/u/usbwebmailnotifier.jpg]

    Das Teil wird über USB angeschlossen, wird als USB HID Gerät erkannt und kann in 3 verschiedene Farben leuchten. Die mitgelieferte Software ist aber nicht das wahre, zumindest nicht so wie ich es mir vorstelle. Soo nun zu meiner Frage, ist es irgendwie möglich mit AutoIT dieses USB Gerät zu steuern ?? Durch die Softwareinstallation hätte ich ja alle nötigen DLLs vorhanden (weiß nur noch nicht, wie ich die Funktion auslesen kann).

    Bin für jeden Tipp dankbar.

    Grüße
    CrazyER

  • dynamische Markierung im Gebäudeplan ??

    • CrazyER
    • 25. Oktober 2010 um 08:46

    Hallo zusammen,

    ich habe mal eine grundsätzliche Frage, ob ich folgendes mit Autoit machen kann. Ich habe ein Lageplan (mit Gebäudenummern) des Firmengelände im JPG Format. Ich möchte nun ein Skript schreiben, das sich mit einer Gebäudenummer als Parameter aufrufen lässt. Das Skript soll dann den Gebäudeplan öffnen und mir das gesucht Gebäude farblich markieren.

    Ist so etwas dynamisches möglich ?? Oder ist das eine Scriptsprache für Webanwendungen besser geeignet ??

    Bin für jegliche Art von Idee dankbar.

    Grüße
    CrazyER

  • AD Gruppenmitglieder in eine andere bestehende Gruppe einpflegen

    • CrazyER
    • 11. Juni 2010 um 15:09

    Also ich habe es fast geschafft, jetzt erhalte ich nur noch ein Fehlermeldung, mit der ich nichts anfangen kann, bzw. die ich mir nicht erklären kann.

    Hier mein Code:

    Spoiler anzeigen
    [autoit]

    #include <AD.au3>

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

    $usertext = FileOpen ("D:\AutoIT\user.txt", 0)
    _AD_Open()

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

    $Logfile = FileOpen("D:\AutoIt\AD-Log.txt", 2)
    $LogDokuSchreiber = FileOpen("D:\AutoIT\DokuSchreiber-LOG.txt", 1)
    $LogDokuAenderer = FileOpen("D:\AutoIT\DokuAenderer-LOG.txt", 1)

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

    Dim $DokuSchreiber[1]
    Dim $DokuAdmin[1]
    Dim $DokuAendererPlus[1]
    Dim $UserFQDN
    Dim $User

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

    While 1
    ;user.txt wird Zeile für Zeile eingelesen, nach der letzten Zeile geht er aus der While Schleife.
    $UserFQDN = FileReadLine($usertext)
    If @error = -1 Then ExitLoop

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

    ;eingelesenr User FQDN wird hier als Benutzername aufgelöst
    $User = _AD_FQDNToSamAccountName($UserFQDN)
    ;jetzt werden alle Gruppen des Users eingelesen
    $aUserGr = _AD_GetUserGroups($User)

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

    ReDim $DokuSchreiber[1]
    ReDim $DokuAdmin[1]
    ReDim $DokuAendererPlus[1]
    $x = 1
    $y = 1

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

    ; DokuSchreiber Gruppen werden hier gefunden
    For $x =1 to $aUserGr[0]
    IF StringRegExp($aUserGr[$x],"DokuSchreiber") Then
    ReDim $DokuSchreiber[UBound($DokuSchreiber)+1]
    $DokuSchreiber[$y] = $aUserGr[$x]
    FileWriteLine($LogDokuSchreiber, $aUserGr[$x])
    $y = $y +1
    EndIf

    Next
    $DokuSchreiber[0] =UBound($DokuSchreiber)-1
    $x = 1
    $y = 1

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

    ; DokuAendererPlus Gruppen werden hier gefunden
    For $x =1 to $aUserGr[0]
    IF StringRegExp($aUserGr[$x],"DokuAendererPlus") Then
    ReDim $DokuAendererPlus[UBound($DokuAendererPlus)+1]
    $DokuAendererPlus[$y] = $aUserGr[$x]
    FileWriteLine($LogDokuAenderer, $aUserGr[$x])
    $y = $y +1
    EndIf

    Next
    $DokuAendererPlus[0] =UBound($DokuAendererPlus)-1
    $x = 1
    $y = 1

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

    ; DokuSchreiber String wird zu DokuAdmin String
    While $x <= $DokuSchreiber[0]
    ReDim $DokuAdmin[UBound($DokuAdmin)+1]
    $DokuAdmin[$y]=StringRegExpReplace($DokuSchreiber[$x],"DokuSchreiber","DokuAdmin")
    $y = $y +1
    $x = $x +1
    WEnd
    $x = 1
    ; DokuAendererPlus String wird zu DokuAdmin String
    While $x <= $DokuAendererPlus[0]
    ReDim $DokuAdmin[UBound($DokuAdmin)+1]
    $DokuAdmin[$y]=StringRegExpReplace($DokuAendererPlus[$x],"DokuAendererPlus","DokuAdmin")
    $y = $y +1
    $x = $x +1
    WEnd

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

    $DokuAdmin[0] =UBound($DokuAdmin)-1

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

    ; Benutzer wird in die DokuAdmin Gruppe hinzugefügt
    $x = 0
    $z = 0
    While $x <= $DokuAdmin[0]
    _AD_AddUserToGroup($DokuAdmin[$x],$User)
    If $z=0 Then
    FileWriteLine($Logfile, "Benutzer "&$User&" wurde in "&$DokuAdmin[$x]&" DokuAdmin-Gruppe(n) hinzugefügt.")
    $z = $z +1
    Else
    FileWriteLine($Logfile, "Benutzer "&$User&" wurde in der Gruppe "&$DokuAdmin[$x]&" hinzugefügt.")
    EndIf
    $x = $x +1
    WEnd

    ; Benutzer wird aus der DokuSchreiber Gruppe gelöscht
    $x = 0
    $z = 0
    While $x <= $DokuSchreiber[0]
    _AD_RemoveUserFromGroup($DokuSchreiber[$x],$User)
    If $z=0 Then
    FileWriteLine($Logfile, "Benutzer "&$User&" wurde in "&$DokuSchreiber[$x]&" DokuSchreiber-Gruppe(n) gelöscht.")
    $z = $z +1
    Else
    FileWriteLine($Logfile, "Benutzer "&$User&" wurde in der Gruppe "&$DokuSchreiber[$x]&" gelöscht.")
    EndIf
    $x = $x +1
    WEnd

    ; Benutzer wird aus der DokuAendererPlus Gruppe gelöscht
    $x = 0
    $z = 0
    While $x <= $DokuAendererPlus[0]
    _AD_RemoveUserFromGroup($DokuAendererPlus[$x],$User)
    If $z=0 Then
    FileWriteLine($Logfile, "Benutzer "&$User&" wurde in "&$DokuAendererPlus[$x]&" AendererPlus-Gruppe(n) gelöscht.")
    $z = $z +1
    Else
    FileWriteLine($Logfile, "Benutzer "&$User&" wurde in der Gruppe "&$DokuAendererPlus[$x]&" gelöscht.")
    EndIf
    $x = $x +1
    WEnd

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

    FileWriteLine($Logfile, "----------------------------------------------------------------------------------------------------------------------------")

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

    Wend

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

    _AD_Close()
    ;_ArrayDisplay($DokuSchreiber, "Alle DokuSchreiber")
    ;_ArrayDisplay($DokuAdmin, "Alle DokuAdmin")
    ;_ArrayDisplay($aUserGr, "Alle")
    Exit

    [/autoit]


    Und hier die Fehlermeldung:

    Code
    >"C:\Programme\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "D:\AUTOIT\ad_test.au3" /autoit3dir "C:\Programme\AutoIt3" /UserParams    
    +>15:07:30 Starting AutoIt3Wrapper v.1.10.1.14    Environment(Language:0407  Keyboard:00000407  OS:WIN_XP/Service Pack 2  CPU:X86  ANSI)
    >Running AU3Check (1.54.19.0)  from:C:\Programme\AutoIt3
    +>15:07:30 AU3Check ended.rc:0
    >Running:(3.3.6.1):C:\Programme\AutoIt3\autoit3.exe "D:\AUTOIT\ad_test.au3"    
    D:\AUTOIT\ad_test.au3 (39) : ==> Subscript used with non-Array variable.:
    For $x =1 to $aUserGr[0]
    For $x =1 to $aUserGr^ ERROR
    ->15:07:31 AutoIT3.exe ended.rc:1
    +>15:07:32 AutoIt3Wrapper Finished
    >Exit code: 1    Time: 3.447
    Alles anzeigen


    Wäre dankbar, wenn mir einer mein Fehler erklären könnte.

    DANKE

  • Active Directory Funktionen - Neue Version 1.5.0.0 freigegeben!

    • CrazyER
    • 11. Juni 2010 um 09:31

    danke dir, manchmal ist die Lösung zu einfach ;o)

  • AD Gruppenmitglieder in eine andere bestehende Gruppe einpflegen

    • CrazyER
    • 11. Juni 2010 um 09:13

    Darter, kann es sein, das dir eine Windows Domäne und somit ein Active Directory (LDAP Server) fehlt??

    @DaX, das mit dem umbennen hatte ich mir auch schon überlegt, aber ich habe da bedenken, das es mit die bestehen Gruppen/Mitglieder eventuell überschreibt/zerhaut, bzw. ob er nicht rum meckert das es die Gruppe ja schon gibt (was er tut, wenn man es manuelle testet) ??

  • Active Directory Funktionen - Neue Version 1.5.0.0 freigegeben!

    • CrazyER
    • 10. Juni 2010 um 17:09

    Sorry wenn ich nun hier direkt reinplatze, aber ich bekomme das UDF irgendwie garnicht zum laufen. Vielleicht hat von euch spontan einer eine Idee.

    Ich sitze an einem Win XP mit SP2 und es ist eine 2003er Domäne.

    [autoit]

    #include <AD.au3>

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

    _AD_Open("testuser", "testpasswd"

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

    _AD_Close

    [/autoit]

    Also ihr seht, nichts besonderes ;o))

    Ich erhalte aber folgende Fehlermeldung:

    Spoiler anzeigen
    Code
    C:\Programme\AutoIt3\Include\AD.au3(1609,59) : ERROR: _Date_Time_SystemTimeToDateTimeStr() called with wrong number of args.
    	$sAD_Now = _Date_Time_SystemTimeToDateTimeStr($sAD_Now, 1)
    	~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\Programme\AutoIt3\Include\Date.au3(2796,60) : REF: definition of _Date_Time_SystemTimeToDateTimeStr().
    Func _Date_Time_SystemTimeToDateTimeStr(ByRef $tSystemTime)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\Programme\AutoIt3\Include\AD.au3(1752,69) : ERROR: _Date_Time_SystemTimeToDateTimeStr() called with wrong number of args.
    	$sAD_DTExpire = _Date_Time_SystemTimeToDateTimeStr($sAD_DTExpire, 1)
    	~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\Programme\AutoIt3\Include\Date.au3(2796,60) : REF: definition of _Date_Time_SystemTimeToDateTimeStr().
    Func _Date_Time_SystemTimeToDateTimeStr(ByRef $tSystemTime)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\Programme\AutoIt3\Include\AD.au3(1771,78) : ERROR: _Date_Time_SystemTimeToDateTimeStr() called with wrong number of args.
    			$aAD_FQDN[$iAD_Count][1] = _Date_Time_SystemTimeToDateTimeStr($sAD_Temp, 1)
    			~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\Programme\AutoIt3\Include\Date.au3(2796,60) : REF: definition of _Date_Time_SystemTimeToDateTimeStr().
    Func _Date_Time_SystemTimeToDateTimeStr(ByRef $tSystemTime)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\Programme\AutoIt3\Include\AD.au3(1773,78) : ERROR: _Date_Time_SystemTimeToDateTimeStr() called with wrong number of args.
    			$aAD_FQDN[$iAD_Count][2] = _Date_Time_SystemTimeToDateTimeStr($sAD_Temp, 1)
    			~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\Programme\AutoIt3\Include\Date.au3(2796,60) : REF: definition of _Date_Time_SystemTimeToDateTimeStr().
    Func _Date_Time_SystemTimeToDateTimeStr(ByRef $tSystemTime)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\Programme\AutoIt3\Include\AD.au3(1918,93) : ERROR: _Date_Time_SystemTimeToDateTimeStr() called with wrong number of args.
    							$aAD_ObjectProperties[$iCount3][1] = _Date_Time_SystemTimeToDateTimeStr($sAD_Temp3, 1)
    							~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\Programme\AutoIt3\Include\Date.au3(2796,60) : REF: definition of _Date_Time_SystemTimeToDateTimeStr().
    Func _Date_Time_SystemTimeToDateTimeStr(ByRef $tSystemTime)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\Programme\AutoIt3\Include\AD.au3(2859,71) : ERROR: _Date_Time_SystemTimeToDateTimeStr() called with wrong number of args.
    			$aAD_PwdInfo[10] = _Date_Time_SystemTimeToDateTimeStr($sAD_Temp2, 1)
    			~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\Programme\AutoIt3\Include\Date.au3(2796,60) : REF: definition of _Date_Time_SystemTimeToDateTimeStr().
    Func _Date_Time_SystemTimeToDateTimeStr(ByRef $tSystemTime)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\Programme\AutoIt3\Include\AD.au3(2863,70) : ERROR: _Date_Time_SystemTimeToDateTimeStr() called with wrong number of args.
    			$aAD_PwdInfo[8] = _Date_Time_SystemTimeToDateTimeStr($sAD_Temp2, 1)
    			~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\Programme\AutoIt3\Include\Date.au3(2796,60) : REF: definition of _Date_Time_SystemTimeToDateTimeStr().
    Func _Date_Time_SystemTimeToDateTimeStr(ByRef $tSystemTime)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\Programme\AutoIt3\Include\AD.au3(2866,70) : ERROR: _Date_Time_SystemTimeToDateTimeStr() called with wrong number of args.
    			$aAD_PwdInfo[9] = _Date_Time_SystemTimeToDateTimeStr($sAD_Temp2, 1)
    			~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\Programme\AutoIt3\Include\Date.au3(2796,60) : REF: definition of _Date_Time_SystemTimeToDateTimeStr().
    Func _Date_Time_SystemTimeToDateTimeStr(ByRef $tSystemTime)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    D:\AUTOIT\ad_test.au3(3,34) : ERROR: syntax error
    _AD_Open("testuser", "testpasswd"
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\Programme\AutoIt3\Include\AD.au3(1004,47) : ERROR: _ArrayUnique(): undefined function.
    		$aAD_Groups = _ArrayUnique($aAD_Groups, 1, 1)
    		~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    D:\AUTOIT\ad_test.au3 - 10 error(s), 0 warning(s)
    Alles anzeigen

    Hat jemand eine Idee ??

    Grüße
    CrazyER

  • AD Gruppenmitglieder in eine andere bestehende Gruppe einpflegen

    • CrazyER
    • 10. Juni 2010 um 16:27

    Tach zusammen

    ich hab mal wieder eine etwas größere Aufgabe zu bewältigen, die mich mal wieder auf AutoIT bringt ;o)

    Also ich erklär mal eben das vorhaben. Wir haben in der AD in einer OU viele viele unter OUs mit noch mehr Gruppen. Unter anderem gibt es doch Gruppen die xxxxxx-DokuAenderer heißen und xxxxxxxxx-DokuAdmin. Ziel ist nun, die Mitglieder von den DokuAenderer in die Gruppe der DokuAdmins einzupflegen, um anschließen alle Gruppen mit DokuAenderer zu löschen.

    Gibt es eine Möglichkeit mit AutoIt direkt in die AD einzugreifen ?? Muss ich mir anderer MS Tools besorgen um dies mit AutoIt zurealisieren ?? Hat jemand sowas zufällig schonmal gescriptet ?? Hat mir jemand einen Ansatz, wie ich das Umsetzen kann ??

    Für jeden Tipp und Rat bin ich dankbar.

    Grüße
    CrazyER

  • Combo auslesen

    • CrazyER
    • 15. April 2010 um 14:37

    Schon erledigt, hatte das Auslesen an der falschen Stelle ;o))

  • Combo auslesen

    • CrazyER
    • 15. April 2010 um 14:32

    Tach zusammen,

    mal iweder eine kleien Frage zwischen durch. ich bin einfach blind ;o))

    Habe folgenden mini Code:

    Spoiler anzeigen
    Code
    DIM $local_IP = @IPAddress1&"|"&@IPAddress2&"|"&@IPAddress3&"|"&@IPAddress4
    
    
    #Region ### START Koda GUI section ### Form=D:\AUTOIT\NSClient\NSCinstall.kxf
    $Form1 = GUICreate("Form1", 354, 173, 193, 125)
    $ok = GUICtrlCreateButton("OK", 240, 32, 65, 33, 0)
    $Combo1 = GUICtrlCreateCombo("", 40, 40, 161, 25)
    GUICtrlSetData(-1,$local_IP)
    
    
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    
    
    $C_IP = GUICtrlRead($Combo1)
    
    
    While 1
    	$nMsg = GUIGetMsg()
    	Switch $nMsg
    		Case $GUI_EVENT_CLOSE
    			Exit
    		Case $ok
    			 MsgBox(1,"test",$C_IP)
    	EndSwitch
    WEnd
    Alles anzeigen

    Wenn ich es nun ausführe und eine IP aus der Box auswähle, mit OK bestätige, dann erhalte ich einfach nur ein lerres Dialogfeld.

    Wieso liest er meine auswahl nicht aus ??

    Grüße
    CrazyER

  • Das Problem mit den Funktionen und den Rückgabewerten

    • CrazyER
    • 13. Januar 2010 um 16:36

    Hallo zusammen,

    wieder einmal bastel ich mir nen altes Script neu und wieder einmal habe ich mir gedacht, mach es richtig, mach Funktionen. Nun funktioniert es eben mal wieder nicht wie ich es will.

    Hier mal das alte Script noch in der einfachen und unübersichtlichen Darstellung:

    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_outfile=Tonerstandplugin.exe
    #AutoIt3Wrapper_Change2CUI=y
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <Process.au3>

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

    Const $inifile = @ScriptDir&"\Tonerstandplugin.ini"
    $i = 0
    $y = 1
    $x = 1
    $Error = 0

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

    $Section = IniReadSectionNames ($inifile)
    $maxArray = $Section[0]
    Dim $DruckerTyp[$maxArray]
    Dim $Tonerartikel[$maxArray]
    Dim $Artikelzusatz[$maxArray]
    Dim $Tonermeldebestand[$maxArray]
    Dim $Tonerbestand[$maxArray]
    Dim $TonerMaximalBestand[$maxArray]
    Dim $Meldung[$maxArray]
    Dim $TonerBestellmenge
    Dim $Output

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

    ; Ini-Datei wird ausgelesen und in die Arrays geschrieben. $Tonerbestand-/meldebstand werden als Zahl eingelesen, damit ein Verlgeich funktioniert.
    While $i < $maxArray
    $DruckerTyp[$i] = IniRead($inifile, $Section[$y], "DruckerTyp","")
    $Tonerartikel[$i] = IniRead($inifile, $Section[$y], "Tonerartikel","")
    $Artikelzusatz[$i] = IniRead($inifile, $Section[$y], "Artikelzusatz","")
    $Tonermeldebestand[$i] = Number(IniRead($inifile, $Section[$y], "Tonermeldebestand",""))
    $Tonerbestand[$i] = Number(IniRead($inifile, $Section[$y], "Tonerbestand",""))
    $TonerMaximalBestand[$i] = Number(IniRead($inifile, $Section[$y], "TonerMaximalBestand",""))
    $i = $i + 1
    $y = $y + 1
    WEnd

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

    $y = 1
    $i = 0
    If $CmdLine[0] > 0 Then
    ; Hier wird der eigentliche Check ausgelöst. Dieser prüft den Tonerbestand gegenüber dem Meldebestand.
    If $CmdLine[1] == "check" Then

    $i = 0
    While $i < $maxArray
    If $Tonerbestand[$i] <= $Tonermeldebestand[$i] Then
    $TonerBestellMenge = $TonerMaximalBestand[$i] - $Tonerbestand[$i]
    $Meldung[$x] = '" | "'&$TonerBestellMenge&"x "&$Tonerartikel[$i]&" "&$Artikelzusatz[$i]&" fuer "&$DruckerTyp[$i]
    $x = $x +1
    $i = $i +1
    Else
    $i = $i +1
    EndIf
    WEnd

    If $x >1 Then
    $Error = 1
    EndIf
    ; Hier wird der $Output mit der $Meldung befüllt/ergenzt
    While $x > 0
    $Output = $Output &$Meldung[$x]
    $x = $x -1
    WEnd

    ; Wenn ein Meldebestand unterschritten worde ist, wird hier die Warnung ausgegeben, ansonsten ist alles OK.
    If $Error >= 1 Then
    _RunDOS("echo Tonerbestand KRITISCH ! "&$Output)
    exit 2
    Else
    _RunDOS("echo Tonerbestand OK")
    exit 0
    EndIf
    Else
    ; Hier wird der Tonerstand angepasst, wenn das Plugin mit dem $Tonerartikel als Parameter aufgerufen wird
    While $i < $maxArray
    If $CmdLine[1] == $Tonerartikel[$i] Then
    $Tonerbestand[$i] = $Tonerbestand[$i] - 1
    IniWrite ($inifile, $Section[$y], "Tonerbestand", $Tonerbestand[$i] )
    EndIf
    $y = $y +1
    $i = $i +1
    WEnd
    EndIf
    Else
    _RunDOS("echo Bitte Parameter mit angeben")
    exit 3
    EndIf

    [/autoit]


    und hier nun meine Version mit Funktionen:

    Spoiler anzeigen
    [autoit]

    #include <Process.au3>

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

    Dim $DruckerTyp[$maxArray]
    Dim $Tonerartikel[$maxArray]
    Dim $Artikelzusatz[$maxArray]
    Dim $Tonermeldebestand[$maxArray]
    Dim $Tonerbestand[$maxArray]
    Dim $TonerMaximalBestand[$maxArray]
    Dim $Meldung[$maxArray]
    Dim $TonerBestellmenge
    Dim $Output
    Dim $Section
    Dim $maxArray
    Dim $x
    Dim $y
    Dim $i

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

    Select
    Case $CmdLine[1] == "Geb.1"
    $inifile = @ScriptDir&"\1_Tonerstandplugin.ini"
    _INIlesen()
    _Tonerlisteanpassung()
    Case $CmdLine[1] == "Geb.2"
    $inifile = @ScriptDir&"\2_Tonerstandplugin.ini"
    _INIlesen()
    _Tonerlisteanpassung()
    Case $CmdLine[1] == "Geb.3"
    $inifile = @ScriptDir&"\3_Tonerstandplugin.ini"
    _INIlesen()
    _Tonerlisteanpassung()
    Case $CmdLine[1] == "Geb.4"
    $inifile = @ScriptDir&"\4_Tonerstandplugin.ini"
    _INIlesen()
    _Tonerlisteanpassung()
    Case $CmdLine[1] == "check"
    _INIlesen()
    _check()

    Case $CmdLine[0] < 0
    _RunDOS("echo Bitte Parameter mit angeben")
    exit 3

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

    EndSelect

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

    Func _INIlesen()
    $i = 0
    $y = 1
    $x = 1
    $Error = 0

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

    $Section = IniReadSectionNames ($inifile)
    $maxArray = $Section[0]

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

    ; Ini-Datei wird ausgelesen und in die Arrays geschrieben. $Tonerbestand-/meldebstand werden als Zahl eingelesen, damit ein Verlgeich funktioniert.
    While $i < $maxArray
    $DruckerTyp[$i] = IniRead($inifile, $Section[$y], "DruckerTyp","")
    $Tonerartikel[$i] = IniRead($inifile, $Section[$y], "Tonerartikel","")
    $Artikelzusatz[$i] = IniRead($inifile, $Section[$y], "Artikelzusatz","")
    $Tonermeldebestand[$i] = Number(IniRead($inifile, $Section[$y], "Tonermeldebestand",""))
    $Tonerbestand[$i] = Number(IniRead($inifile, $Section[$y], "Tonerbestand",""))
    $TonerMaximalBestand[$i] = Number(IniRead($inifile, $Section[$y], "TonerMaximalBestand",""))
    $i = $i + 1
    $y = $y + 1
    WEnd

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

    EndFunc

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

    Func _check()
    ; Hier wird der eigentliche Check ausgelöst. Dieser prüft den Tonerbestand gegenüber dem Meldebestand.
    $y = 1
    $i = 0
    While $i < $maxArray
    If $Tonerbestand[$i] <= $Tonermeldebestand[$i] Then
    $TonerBestellMenge = $TonerMaximalBestand[$i] - $Tonerbestand[$i]
    $Meldung[$x] = '" | "'&$TonerBestellMenge&"x "&$Tonerartikel[$i]&" "&$Artikelzusatz[$i]&" fuer "&$DruckerTyp[$i]
    $x = $x +1
    $i = $i +1
    Else
    $i = $i +1
    EndIf
    WEnd

    If $x >1 Then
    $Error = 1
    EndIf
    ; Hier wird der $Output mit der $Meldung befüllt/ergenzt
    While $x > 0
    $Output = $Output &$Meldung[$x]
    $x = $x -1
    WEnd

    ; Wenn ein Meldebestand unterschritten worde ist, wird hier die Warnung ausgegeben, ansonsten ist alles OK.
    If $Error >= 1 Then
    _RunDOS("echo Tonerbestand KRITISCH ! "&$Output)
    exit 2
    Else
    _RunDOS("echo Tonerbestand OK")
    exit 0
    EndIf

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

    EndFunc

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

    Func _Tonerlisteanpassung()
    ; Hier wird der Tonerstand angepasst, wenn das Plugin mit dem $Tonerartikel als Parameter aufgerufen wird
    $i = 0
    $y = 1
    While $i < $maxArray
    If $CmdLine[2] == $Tonerartikel[$i] Then
    $Tonerbestand[$i] = $Tonerbestand[$i] - 1
    IniWrite ($inifile, $Section[$y], "Tonerbestand", $Tonerbestand[$i] )
    EndIf
    $y = $y +1
    $i = $i +1
    WEnd
    EndFunc

    [/autoit]


    Kann mir nun mal einer erklären, was ich tun muss, damit jede Funktion jede Variable kennt ??


    Danke im voraus.
    Grüße
    CrazyER

  • Probleme mit array ?

    • CrazyER
    • 9. Dezember 2009 um 09:15

    Supi vielen Dank.

    Macht immer wieder Spaß mit euch zu scripten. Und gelernt habe ich auch wieder eine Menge.

  • Probleme mit array ?

    • CrazyER
    • 9. Dezember 2009 um 09:01

    Sooo, nun hatte ich gestern mal wieder einbisschen Zeit das Script anzupassen. Habe es auch gleich durchlaufen lassen. Bei 9583 Ordnern hat es ne Weile gedauert, aber es lief. Nur ein Problem habe ich nicht bedacht. Manche Ordner haben Leerstellen drin, und da der String nicht in " " gesetzt ist, weiß robocopy damit wenig anzufangen. Wer hat bloss dieses DOS erfunden ;o))

    Also hier mal ein aktuelles Script:

    Spoiler anzeigen

    autoit]#include <_GetFilesFolder_Rekursiv.au3>
    #include <File.au3>
    #include <String.au3>
    #include <Array.au3>
    If FileExists(@ScriptDir&"\robocopy.exe") == 1 Then
    $robocopy = "Robocopy ist vorhanden"
    Else
    $robocopy ="ACHTUNG: Bitte Robocopy in das Scriptverzeichnis kopieren!"
    EndIf

    MsgBox(0,"Robocopy ?",$robocopy)


    $Laufwerk = "W:\"
    $altJahr = "2009"
    $neuJahr = "2010"


    $array=_GetFilesFolder_Rekursiv($Laufwerk, 1, 1)
    DIM $String, $sPfad, $aPfad, $sNowPath, $aNowPath
    For $i = 1 to $array[0]
    $String=StringSplit($array[$i],"\")
    If $String[$String[0]-1] == $altJahr Then
    $sPfad &= $array[$i]&"|"
    EndIf
    Next
    If $sPfad <> "" then
    $aPfad = StringSplit(StringTrimRight($sPfad,1),"|")
    For $i = 1 to $aPfad[0]
    $aNowPath = StringSplit($aPfad[$i],"\")
    For $x = 1 to $aNowPath[0]-2
    $sNowPath &= $aNowPath[$x]&"\"
    Next
    If Not FileExists($sNowPath& $neuJahr) Then _robocopy($sNowPath)
    ;DirCreate($sNowPath&"2010")
    ConsoleWrite($sNowPath& $neuJahr& @CRLF)
    $sNowPath = ""
    Next

    Else
    MsgBox(0,"","nichts gefunden")
    EndIf


    MsgBox(0,"","Script ist komplett durchgelaufen!")


    Func _robocopy($Pfad)
    Run (@ScriptDir&"\robocopy.exe "&$Pfad&$altJahr&" "&$Pfad&$neuJahr&" /E /LEV:3 /ZB /COPY:ATSO /LOG:test.txt")
    EndFunc[/autoit]


    Wie bekomme ich nun hier @ScriptDir&"\robocopy.exe "&$Pfad&$altJahr&" "&$Pfad&$neuJahr&" /E /LEV:3 /ZB /COPY:ATSO /LOG:test.txt" das doppelte " " hin ??

    Vorschläge werden gerne angenommen.

    DANKE

  • Probleme mit array ?

    • CrazyER
    • 3. Dezember 2009 um 11:26

    erstmal danke euch beiden. Eigentlich war mein Ansatz ja garnicht soooooo schlecht :o))

    ich habe mich nun für die Methode von SEuBo entschieden, funktioniert auch gut. Muss nur noch das DirCreate gegen ein Robocopy Befehl tauschen.

    Aber irgendwie gehen mir die einzelne Schritte deiner Logik noch nicht ganz in den Kopf. Wäre es zuviel verlangt, wenn du mir erklären könntest, was welcher Schritt genau macht ? Dann wäre für mich auch noch ein Lerneffekt dabei.

  • Probleme mit array ?

    • CrazyER
    • 2. Dezember 2009 um 18:04

    derren Namen 2009 IST. Ich benötige aber von diesem Ordner den vollständigen Pfad.

  • Probleme mit array ?

    • CrazyER
    • 2. Dezember 2009 um 17:07

    Hallo zusammen

    ich hab folgenden Code:

    [autoit]

    #include <_GetFilesFolder_Rekursiv.au3>
    #include <File.au3>
    #include <String.au3>

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

    $sPath="D:\"
    $iDir=1
    $iRetType=1
    $array=_GetFilesFolder_Rekursiv($sPath, $iDir, $iRetType)
    $i=1
    $y=0
    $x=0
    DIM $String
    DIM $Pfad
    While $i <= UBound($array)

    $String=_StringSplit($array[$i],"\")
    While $x <= UBound($String)
    If $String[$x] == "2009" Then $Pfad[$y] = $array[$i]
    If $Pfad[$y] > 1 Then $y = $y+1
    $x = $x+1
    WEnd
    $x = 0
    $i = $i +1
    WEnd
    MsgBox(0,"test", $y)

    [/autoit]

    Wenn ich ihn ausführe, erhalte ich folgende Fehlermeldung:

    Code
    :\AUTOIT\Jahreswechsel.au3 (27) : ==> Subscript used with non-Array variable.:
    If $Pfad[$y] > 1 Then $y = $y+1
    If $Pfad^ ERROR

    Ich vermute mal, das er ein Problem mit dem Array hat, aber ich blick es nicht ganz.

    Im Detail, was ich vor habe:
    Ich möchte einen Pfad durchsuchen lassen und alle Ordner die 2009 enthalten finden und dort einen Ordner 2010 erstellen lassen. Also durchsuche ich alle Ordner und lasse sie in ein Array schreiben, diese Array splitte ich in einzelne Strings auf und suche nach 2009. Die Ergebnise lasse ich mir dann wieder in eine neues Array schreiben, damit ich am ende nur noch ein Array habe, in dem dann alle Pfade mit 2009 drinstehen.


    Bin für jeden Tipp dankbar.

  • Combo Box Auslesen ??

    • CrazyER
    • 18. November 2009 um 17:27

    Tach zusammen, stehe mal wieder vor einem Rätsel, das Ihr bestimmt schnell lösen könnt.

    Möchte von einer Combobox etwas auswählen und den Eintrag mit einer Variablen Vergleichen, aber irgendwie ruft er nicht mal meine Funktion auf, bzw wenn er sie mal aufruft, dann liest er das Combofeld nicht aus. Wo ist mein Fehler ??

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    $x=1
    DIM $artikel[100]
    DIM $bestandalt[100]
    DIM $liste
    _lesen()
    _fuellen()
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 633, 168, 192, 124)
    $Combo1 = GUICtrlCreateCombo($artikel[0], 32, 64, 329, 25)
    $Combo1 = GUICtrlSetData(-1, $liste, $artikel[0])
    $aktuell = GUICtrlCreateInput("aktuell", 384, 64, 49, 21)
    $neu = GUICtrlCreateInput("neu", 464, 64, 49, 21)
    $OK = GUICtrlCreateButton("Übernehmen", 536, 64, 81, 25, $WS_GROUP)
    $Exit = GUICtrlCreateButton("Beenden", 272, 112, 113, 33, $WS_GROUP)
    $Label1 = GUICtrlCreateLabel("TonerTyp auswählen:", 32, 40, 153, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    $Label2 = GUICtrlCreateLabel("aktuell", 392, 40, 35, 17)
    $Label3 = GUICtrlCreateLabel("neu", 472, 40, 22, 17)
    $Label4 = GUICtrlCreateLabel("Tonerbestand", 400, 16, 101, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    Case $Exit
    Exit

    Case $Combo1
    GUICtrlSetData ( $aktuell, _anzeigen())
    EndSwitch
    WEnd

    Func _lesen()

    While $x <= 99

    $artikel[$x] = IniRead ("\\printserver\c$\NSClient++\nrpe\Tonerstandplugin.ini", "TonerTyp"&$x, "Tonerartikel", "0")
    $bestandalt[$x] = IniRead ("\\printserver\c$\NSClient++\nrpe\Tonerstandplugin.ini", "TonerTyp"&$x, "Tonerbestand", "0")
    $x = $x + 1
    WEnd
    EndFunc
    Func _fuellen()
    $x = 1
    $liste = $artikel[$x]
    $x= 2

    While $x <= 99

    $liste = $liste &"|"& $artikel[$x]
    $x = $x +1
    WEnd
    EndFunc
    Func _anzeigen()
    $auswahl = GUICtrlRead ($Combo1)
    $i = 0
    $x =1


    While $i = 0

    If $auswahl = $artikel[$x] Then $i = 1
    $x = $x +1


    WEnd

    $toneraktuell = $bestandalt[$x]
    Return $toneraktuell
    EndFunc

    [/autoit]

    Bin wie immer für jeden Tipp dankbar.

    Grüße
    CrazyER

  • Texte mit verschiedenen Schriften darstellen lassen.

    • CrazyER
    • 12. November 2009 um 21:46

    Tach zusammen mal wieder ;o))


    gibt es eine Möglichkeit Texte in verschiedenen Schriftarten und Farben darstellen zu lassen ?? Bislang lese ich die Texte alle aus einer ini Datei und füge Sie bei bedarf in ein Input feld. Ist ja schön und gut. aber ich würde gerne einige Textstelle besonders hervorheben durch andere Schriftart und anderer Farbe. z.B. als HTML Text oder sonst was. Wie muss ich die Texte bereit halten, damit ich sie auslesen kann und nicht fest in den Code binden muss. Und in welche Felder kann ich die Texte einfügen lassen ??


    Für Tipps bin ich wieder immer dankbar.


    Grüße

    CrazyER

  • 2. Guifenster lässt sich nicht schließen ??

    • CrazyER
    • 11. November 2009 um 21:13

    Hat sich erledigt, man darf scheinbar nicht beide GUI Methode mit einander mischen.


    Sollte ich falsch liegen, bin ich für eine Aufklärung dankbar.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™