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. ugt100

Beiträge von ugt100

  • Frage zur Verwendung von _FileDeleteAfterXDays

    • ugt100
    • 22. August 2014 um 11:29

    Guten Morgen zusammen,
    irgendwie komme ich nicht auf einen grünen Zweig - daher die Frage hier im Forum.

    Ich habe verschiedene Maschinen/Server auf denen kontinuierlich Log Files geschrieben werden. Damit dies nicht 'Überhand' nimmt, nutze ich die Funktion _FileDeleteAfterXDays, was auch prima funktioniert.
    Um flexibler zu sein, würde ich gerne a) den Folder (in dem die zu löschenden Files liegen) und b) den Wert FileDeleteAfterXDays mittels einer ini Datei hinetrlegen (IniRead ...).
    Das Einlesen dieser Werte/Variablen funktioniert soweit auch - soll heissen ich kann die Werte $folder und $DeleteAfterDays erfolgreich abfragen (mittels a) _ArrayDisplay und b) Msgbox).
    Auch die Übergabe der Werte an die UDF funktioniert s. Msgbox.
    Leider werden aber die entsprechenden Files nicht gelöscht.
    Setzte ich anstelle der Variable $DeleteAfterDays einen Zahlenwert direkt - dann funktioniert es.

    Das verstehe ich (leider) nicht

    Wahrscheinlich ein ganz 'einfaches' Ding - aber ich sehe es nicht

    Danke schon einmal im voraus
    ugt100


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

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Outfile_x64=c:\Temp\test\Del_GSXLogs_90days.exe
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <Date.au3>
    #include <File.au3>
    #include <Array.au3>

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

    $folder = IniRead(@ScriptDir & "\cde_test.ini", "Settings", "folder", "Key not Found")
    $dir = _FileListToArray($folder, '*.*')
    _ArrayDisplay($dir)

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

    $DeleteAfterDays = IniRead(@ScriptDir & "\cde_test.ini", "Settings", "DeleteAfterDays", "Key not Found")
    MsgBox(0,"",$DeleteAfterDays)

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

    If $dir[0] > 1 Then _FileDeleteAfterXDays($folder, $DeleteAfterDays, True) ; <---- das funktioniert nicht
    ;If $dir[0] > 1 Then _FileDeleteAfterXDays($folder, 10, True) ; <---- das funktioniert hingegen

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

    ;===============================================================================
    ; Function Name: _FileDeleteAfterXDays($sPath, $iDays[, $bForceDel][, $bRek][, $bDirDel][, $bLog])
    ; Description:: loescht Dateien in einem ausgewaehltem Verzeichnis (rekursiv)
    ; nach einer angegebenen Anzahl von Tagen
    ; Parameter(s): $sPath = Verzeichnis, aus dem die Dateien geloescht werden sollen.
    ; $iDays = Dateien, die aelter als $iDays (in Tagen) sind, loeschen.
    ; $bForceDel = wenn "True" werden auch Dateien/Verzeichnisse geloescht,
    ; die gegen das Loeschen geschuetzt sind ("R"-Attribut)
    ; $bRek = wenn "True" wird das Verzeichnis rekursiv (inkl. Unter-
    ; verzeichnisse) durchsucht.
    ; $bDirDel = wenn "True" wird das Unterverzeichnis geloescht, wenn
    ; es (aufgrund der Loeschaktion) leer ist.
    ; $bLog = wenn "True" wird das Ergebnis der Loeschaktion in die
    ; Console geschrieben.
    ; Requirement(s): AutoIt-Version min. v3.3.2.0
    ; #include <Date.au3>
    ; Return Value(s): bei Erfolg Rueckgabe = 1
    ; bei Fehler Rueckgabe = 0
    ; und @error:
    ; 1 = $iDays ist keine oder eine negative Zahl
    ; 2 = Das uebergebene Verzeichnis existiert nicht oder ist leer.
    ; Author(s): Oscar (http://www.autoit.de)
    ; Micha_he (http://www.autoit.de)
    ;===============================================================================
    Func _FileDeleteAfterXDays($sPath, $iDays, $bForceDel = False, $bRek = True, $bDirDel = True, $bLog = True)

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

    MsgBox(0,"",$iDays)

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

    Local $hSearchm, $hEmpty, $sFile, $sDate, $iRet
    If (Not IsNumber($iDays)) Or ($iDays < 0) Then Return SetError(1, 0, 0)
    If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
    $hSearch = FileFindFirstFile($sPath & '*.*')
    If @error Then Return SetError(2, 0, 0)
    While 1
    $sFile = FileFindNextFile($hSearch)
    If @error Then ExitLoop
    If @extended Then
    If $bRek Then
    _FileDeleteAfterXDays($sPath & $sFile, $iDays, $bForceDel, $bRek, $bDirDel, $bLog)
    If $bDirDel Then
    $hEmpty = FileFindFirstFile($sPath & $sFile & '\*.*')
    If @error Then
    If $bForceDel Then FileSetAttrib($sPath & $sFile, '-R')
    $iRet = DirRemove($sPath & $sFile)
    If $bLog Then ConsoleWrite('Delete Folder "' & $sPath & $sFile & '" = ' & StringMid('No Yes', $iRet * 3 + 1, 3) & @CR)
    EndIf
    FileClose($hEmpty)
    EndIf
    EndIf
    Else
    $sDate = StringRegExpReplace(FileGetTime($sPath & $sFile, 0, 1), '(\d{4})(\d{2})(\d{2})(.*)', '$1/$2/$3')
    If _DateDiff('D', $sDate, _NowCalc()) > $iDays Then
    If $bForceDel Then FileSetAttrib($sPath & $sFile, '-R')
    $iRet = FileDelete($sPath & $sFile)
    If $bLog Then ConsoleWrite('Delete File "' & $sPath & $sFile & '" = ' & StringMid('No Yes', $iRet * 3 + 1, 3) & @CR)
    EndIf
    EndIf
    WEnd
    FileClose($hSearch)
    Return 1
    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit]
  • rekusive Dateiliste plus Dateigrösse ermitteln und im Array anzeiegn

    • ugt100
    • 6. März 2014 um 17:17

    Super jetzt funktioniert es ....


    DANKE Schnitzel / DANKE Andy

    wie immer einfach Supi das Forum


    Gruss
    ugt100 :thumbup::thumbup:

  • rekusive Dateiliste plus Dateigrösse ermitteln und im Array anzeiegn

    • ugt100
    • 6. März 2014 um 16:11

    Hi Andy,

    genau dieser Gedanke ist mir eben auch eaufgekommen .... gleich mal testen DANKE

  • rekusive Dateiliste plus Dateigrösse ermitteln und im Array anzeiegn

    • ugt100
    • 6. März 2014 um 15:49

    So sieht das Verzeichnis aus

    DIR = $PLUGINSDIR
    DIR = $PROFILE
    DIR = ADAT
    DIR = AD_Func
    DIR = api
    Au3Check.dat
    Au3Check.exe
    Au3Info.exe
    Au3Info_x64.exe
    DIR = Aut2Exe
    AutoIt v3 Website.url
    AutoIt.chm
    AutoIt.chw
    AutoIt3.chm
    AutoIt3.chw
    AutoIt3.exe
    AutoIt3Help.exe
    AutoIt3Wrapper
    AutoIt3_x64.exe
    DIR = AutoItX
    DIR = CodeWizard
    DIR = cSnippet
    DIR = Defs
    DIR = Examples
    DIR = Extras
    findstr.au3
    findstr.exe
    DIR = Icons
    DIR = Include
    DIR = Koda
    DIR = lua
    MS_SystemErrorCodes.txt
    DIR = Obfuscator
    DIR = OL_Func
    DIR = Properties
    SciLexer.dll
    DIR = SciTe
    SciTE.exe
    SciTE4AutoIt3.chm
    DIR = SciTEConfig
    SciTEGlobal.properties
    DIR = SciTEJump
    DIR = Tidy
    UDFs3.chm
    UDFs3.chw
    DIR = _Snips

  • rekusive Dateiliste plus Dateigrösse ermitteln und im Array anzeiegn

    • ugt100
    • 6. März 2014 um 15:44

    Hi Schnitzel,

    also offensichtlich wird die DateiListe eingelesen und dann bei der Ermittlung der FileGröße läuft das Script auf einen Fehler - und zwar bei allen gefundenen Dateien.
    Anders ausgedrückt die Grösse wird nicht zurückgegeben.

  • rekusive Dateiliste plus Dateigrösse ermitteln und im Array anzeiegn

    • ugt100
    • 6. März 2014 um 15:23

    ja da gibt es Dateien von 28 KB bis 5 MB Größe

  • rekusive Dateiliste plus Dateigrösse ermitteln und im Array anzeiegn

    • ugt100
    • 6. März 2014 um 15:10

    ja habe ich ich habe einfach folgendes ausprobiert

    $cdeDir = "J:\installAIT"

    $a = _FileListToArray($cdeDir)
    .....

    Warum 500 KB

  • rekusive Dateiliste plus Dateigrösse ermitteln und im Array anzeiegn

    • ugt100
    • 6. März 2014 um 14:58

    Hallo Schnitzel,

    danke für die schnelle Antwort.
    Das sieht soweit gut aus - leider werden die Filegrössen nicht richtig angezeigt bzw. der Wert ist immer 0 ....
    Sieht so aus als ob das FileGetSize nicht zieht


    Danke
    Gruss
    ugt100

  • rekusive Dateiliste plus Dateigrösse ermitteln und im Array anzeiegn

    • ugt100
    • 6. März 2014 um 13:54

    Hallo zusammen,

    habe da mal wieder ein Problem.
    Und zwar muss ich auf verschiedenen Maschinen ein Dir /s *.* laufen lassen - also ab einem Enstiegspunkt die FileListe ermitteln.
    Das gelingt mir auch schon unter Nutzung der (BugFix'schen) GetFilesFolderRekursiv UDF.
    Das Ergebnis ist ein Array (angezeigt mit _ArrayDisplay) ...
    Soweit - sogut.

    Jetzt kommt aber mein Problem - denn ich benötige neben den Fileanmen auch noch die jeweilige Größe der gefundenen Datei.
    Die Größe kann ich - so denke ich zumindest - ermitteln, wenn mittels UBOUND die einzelnen Elemente des Array 'lese' und mit
    FileGetSize ermittle.

    Doch wie schaffe ich es das (Gesamt)Ergebnis in ein 2 dim Array zu schreiben ?

    Beispiel

    d:\test
    1.txt
    2.txt
    3.xls
    4.doc

    mit Hilfe von GetFilesFolderRekursiv bekomme ich folgendes Ergebnis

    _ArrayDisplay
    4
    1.txt
    2.txt
    3.xls
    4.doc


    Jetzt Schleife + Ubound + FileGetSize
    soll ergeben

    _ArrayDisplay
    4
    1.txt 2,0 mb
    2.txt 1,5 mb
    3.xls 1,0 mb
    4.doc 9,5 mb


    Danke schon einmal im voraus

    mfg
    ugt100

  • Probleme mit meinem Text Template Tool

    • ugt100
    • 29. Januar 2014 um 17:01

    Hallo Chesstiger,

    Danke für die Antwort - soweit sogut.
    leider bekomme ich das nicht hin :(
    Soll heissen ich schaffe es nicht das Array bzw. die jeweiligen Elemente des ResultArrays mit StringFormat 'umzubiegen'.
    Gefunden habe ich desweiteren den Snip von ProgAndy der aus meiner Sicht das macht.

    Aber irgendwie packe ich es nicht auf die Reihe
    Vielleicht kannst Du mir ja helfen - wäre suoer - DANKE

    [autoit]


    $text = "test \r\n" & @CRLF & ":)"
    $encoded = _StringEscape($text)

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

    $format = StringFormat($text)
    $encformat = StringFormat($encoded)
    MsgBox(0, '', "## Originaltext: ##" & @CRLF & $text & @CRLF & "## nach _StringEscape ##" & @CRLF & $encoded & @CRLF & "## StringFormat vor _StringEscape ##" & @CRLF & $format & @CRLF & "## StringFormat nach _StringEscape ##" & @CRLF & $encformat & @CRLF & "#######################" )

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

    ; Prog@ndy
    Func _StringEscape($String)
    Local $escaping[5][2] = [ ['%','%%'], ['\','\\'], [@CR,'\r'], [@LF, '\n'], [@TAB,'\t'] ]
    For $i = 0 To UBound($escaping)-1
    $String = StringReplace($String,$escaping[$i][0],$escaping[$i][1]);,0,1)
    Next
    Return $String
    EndFunc

    [/autoit]


    Gruss
    ugt100

  • Probleme mit meinem Text Template Tool

    • ugt100
    • 29. Januar 2014 um 08:24

    Guten Morgen zusammen,

    gestern bin ich über das Template Text Script gestolpert.
    Dieses wäre hier in meinem Umfled super einzusetzen, um Kollegen das 'standadisierte Ausfüllen von Formularen' zu erleichtern.

    Allerdings müsste es möglich sein in den in der Text.ini hinterlegten TextSnips auch Zeilenumbrüche nutzen zu können.
    Geht das so überhaupt ?

    Stand jetzt
    aaaa - bbbb - cccc - dddd

    Stand gewünscht
    aaaa
    bbbb
    cccc
    dddd

    Leider ist es mir nicht gelungen hierzu eine Lösung zu finden / zu realisieren
    Daher wende ich mich hier an das Forum mit meiner Frage.


    Danke schon einmal im voraus

    mfg
    ugt100

  • Online auf die neuste Programmversion CCleaner prüfen

    • ugt100
    • 4. November 2013 um 17:11

    Danke für die schnelle Antwort ...
    (und wie immer war es ganz einfach bzw. ich habe zu kompliziert gedacht)


    DANKE


    Greets
    ugt100
    :thumbup::thumbup::thumbup:

  • Online auf die neuste Programmversion CCleaner prüfen

    • ugt100
    • 4. November 2013 um 15:53

    Hallo zusammen,

    ich bin gerade dabei (erst mal zum Üben) ein Script zu 'bauen' welches on demand von der offiziellen Webseite (https://autoit.de/www.piriform.c…le/downloadfile)
    die neuste Version herunterlädt, entzippt und die vorhandene Version auf dem Rechner updated.
    Soweit so gut - das funktioniert auch :)

    Jetzt zu meinem Problem:
    Ich würde gerne zyklisch (scheduled task) online prüfen, ob eine neuere Version zur Verfügung steht, wenn ja - dann download und Installation (s. oben)

    Die Information über die neuste Version findet man hier http://www.piriform.com/ccleaner/download - sofern man den Quelltext anschaut
    .....
    <h2 class="icon_edit">Release notes</h2>
    <div class="indent">
    <ul class="versionHistory">
    <li>
    <strong>
    v4.07.4369
    </strong> (24 Oct 2013)
    <p>
    .......

    ??? Jetzt meine Frage: Wie kann ich den Quelltext auslesen ???


    Ich denke mal sofern ich den Quelltext habe - sollte ich mit _StringBetween($WebSiteContent,' <strong>', </strong>) zum Ziel kommen.


    Ich hoffe einmal auf Antworten von den Profis - DANKE schon einmal im voraus


    Greets
    ugt100

  • Files und Folder löschen

    • ugt100
    • 19. Juli 2013 um 12:03

    Hallo zusammen,

    DANKE für den TIP
    (einwenig peinlich ist es mir schon - habe vor lauter Bäumen den Wald nicht mehr gesehen - wie blöd)

    mfg
    ugt100

  • Files und Folder löschen

    • ugt100
    • 19. Juli 2013 um 11:41

    Hallo zsammen,

    ich habe da mal eine Frage zum o.g. Thema.

    Ich muss einen Löschbefehl ausführen, welcher ab einem bestimmten Punkt Ordner und Unterordner mit und ohne Dateien löschen soll,

    Unter DOS/CommandLine sieht das so aus:
    rd /s /Q %Homeshare%\appsuser\XXXXX (wobei %Homeshare% = J:\ ist)

    Das will mir aber unter AutoIt nicht gelingen und ich verstehe einfach nicht woran das liegt

    [autoit]


    $Path1 = "\appsuser\XXXXX"
    $FullPath = @HomeDrive & $Path1 ; ergibt j:\appuser\XXXX
    MsgBox(0,"",$FullPath)
    FileDelete($FullPath)

    [/autoit]

    Leider passiert dabei garnichts, soll heissen weder Ordner noch Dateien werden gelöscht.
    Hat jemand eine Idee ???


    DANKE

    mfg
    ugt100

  • (allg.) Frage zu einem RegEx

    • ugt100
    • 4. Juli 2013 um 15:15

    Hi Xenon,

    danke für die Hilfe - jetzt wo ich den Suchstring sehe, ist es ganz einfach.
    Warum 'Klimmzüge' - ich werde den String noch zweien unserer 'HelpDesk' Kollegen geben,
    damit sie, wenn gebraucht, es auch z.B. im Notepad++ nutzen können.
    Die können dann Fragen dadurch beantworten.

    Die Anwendung die ich nutzen will, steht Ihnen nicht zur Verfügung (Organisatorische Vorgaben :( )

    DANKE
    mfg
    ugt100 :thumbup:

  • (allg.) Frage zu einem RegEx

    • ugt100
    • 4. Juli 2013 um 13:13

    Hallo zusammen,

    ich habe da eine Frage zum RegEx (irgendwie kapiere ich es nicht)....

    Problem:
    Ich habe ein Textfile in dem ich aus vielen Zeilen im ersten Schritt nur die Zeilen heraussuche die ich benötige.
    Soweit, sogut - das klappt. Das Zwischenergebnis sieht wie folgt aus.

    Bsp.:
    Line 12: "<new_dn person='true'>CN=A0001,ou=user,ou=YYYYYY,o=ZZZZZ,c=DE</new_dn>"
    Line 17: "<new_dn person='true'>CN=B0002,ou=user,ou=YYYYYY,o=ZZZZZ,c=DE</new_dn>"
    Line 22: "<new_dn person='true'>CN=C0003,ou=user,ou=YYYYYY,o=ZZZZZ,c=DE</new_dn>"
    Line 27: "<new_dn person='true'>CN=D0004,ou=user,ou=YYYYYY,o=ZZZZZ,c=DE</new_dn>"
    Line 32: "<new_dn person='true'>CN=E0005,ou=user,ou=YYYYYY,o=ZZZZZ,c=DE</new_dn>"
    Line 37: "<new_dn person='true'>CN=F0006,ou=user,ou=YYYYYY,o=ZZZZZ,c=DE</new_dn>"

    Und nun zu meinem Problem:
    Aus jeder dieser Zeilen brauche ich 'nur' den Anteil der zwischen CN= und dem ',' steht (z.B. A0001, ...)
    und zwar ermittelt durch einen RegExpress Ausdruck.

    P.S. Ich weiss das könnte man auch mittels _StringBetween machen, aber in meinem Fall eher unglücklich,
    da ich sonst ziemliche Klimmzüge machen müsste.


    Danke schon einmal im voraus

    mfg
    ugt100

  • Verzeichnisse vergleichen, Unterschiede sichern.

    • ugt100
    • 22. Mai 2013 um 12:27

    Hallo Manfred,

    ich hatte ein ähnliches Problem vor kurzer Zeit.

    Die Lösung habe ich letztlich hier im Forum gefunden.
    Suche mal nach den Funtionen _Check und _RecursiveFileListToArray

    ; Function Name: _Check($Verz1, $Verz2, $iDays)
    ; Description: Compare DIR1 against DIR2 for unique Files
    ; Author(s): Oscar (https://autoit.de/www.autoit.de)
    ; Impulsed vby: bernd670 (https://autoit.de/www.autoit.de)


    ; Function Name: _RecursiveFileListToArray($sPath, $sPattern, $iFlag = 0, $iFormat = 1, $sDelim = @CRLF)
    ; Description:: gibt Verzeichnisse und/oder Dateien (rekursiv) zurück, die einem RegExp-Pattern entsprechen
    ; Author(s): Oscar (https://autoit.de/www.autoit.de)
    ; Anregungen von: bernd670 (https://autoit.de/www.autoit.de)


    Gruss
    ugt100 ;)

  • Webformular "Log in" Button 'drücken'

    • ugt100
    • 13. Mai 2013 um 21:14

    Hallo und einen schönen Guten Abend,

    ich habe da mal ein Problem.
    Heute habe ich von den Leuten von dyndns.org eine Mitteilung erhalten, dass man sich - sofern man einen 'free' Account nutzt - einmal pro Monat mit seinem Account anmelden muss.
    Das ist relativ lästig und ich wollte/will das mittels AUTOIT Script und dem MS Taskscheduler automatisieren.

    Mein bisheriges Script öffnet den IE, ruft die Dyndns Seite auf und füllt den Usernamen und das Passwort in den entsprechenden Feldern des 'Formulars' korrekt aus.
    Mein Problem ist jetzt allerdings das 'Drücken' des "Log in" Buttons ... Irgendwie passiert da leider nichts.

    Vllt weiss ja jemand hier Rat ......

    [autoit]


    #include <IE.au3>

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

    $Username = 'Max Mustermann'
    $Password = '1234567890'

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

    $oIE = _IECreate ("https://account.dyn.com/entrance/")
    $oForm = _IEFormGetCollection($oIE, 0)
    $oUsername = _IEFormElementGetObjByName($oForm, 'username')
    $oPassword = _IEFormElementGetObjByName($oForm, 'password')
    _IEFormElementSetValue($oUsername, $Username)
    _IEFormElementSetValue($oPassword, $Password)

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

    _IELinkClickByText($oIE, "Log in")

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

    ;~ _IEFormImageClick($oIE, 'Log in', 'name')
    _IEFormSubmit($oForm)

    [/autoit]

    Ich füge nochmal die Stelle des Quelltextes der Webseite an, in der m.M. das entscheidenden Information stehen sollten

    Spoiler anzeigen


    <fieldset>
    <div class='legend'>Already Registered?</div>
    <label for='login39_username'>Username</label>
    <fieldset><input id='login39_username' name='username'/></fieldset>
    <label for='login39_password'>Password</label>
    <fieldset><input id='login39_password' name='password' type='password' value='' autocomplete='off'/></fieldset>
    <input type="hidden" id="iov1" name="iov_id">
    </fieldset>
    <fieldset class='submit'><input type='submit' name='submit' id='login39_submit' value='Log in'/></fieldset>
    <div class='someinfo'><a href='/resetpass/'>Forgot your password?</a></div>
    <input type='hidden' name='multiform' value='59F55AC4B342508221C2FCEB05E16FC4E9'/>
    </form>
    </div>
    <p id="forsignup">Account Registration</p>


    Danke schon mal voraus

    mfg
    ugt100

  • Free Clouds und Management

    • ugt100
    • 9. Mai 2013 um 20:10

    Hi,

    ich nutze das Tool Carot ..... funktioniert sehr gut.

    mfg
    ugt100

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™