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

Beiträge von leertaste

  • Array beabeiten

    • leertaste
    • 5. Dezember 2007 um 22:40

    so schaut der Rest aus....


    [autoit]

    #include <File.au3>
    #include <Array.au3> ;Für ArrayDisplay
    $pfad = @ScriptDir
    $aFiles = _FileListToArray($pfad,"*.jpg")
    If @error = 1 Then
    MsgBox(0, "", "No Files\Folders Found.")
    Exit
    EndIf
    _ArrayDisplay($aFiles,"Ergebnis von FileListToArray")
    Dim $n_array[Ubound($aFiles)][3]
    Dim $entry = 0 ;Aktueller Index des neuen Arrays
    For $i = 1 To $aFiles[0]
    If StringLen($aFiles[$i]) >= 14 Then
    $n_array[$entry][0] = $aFiles[$i]
    $n_array[$entry][1] = FileGetTime($pfad & "\" & $aFiles[$i], 0, 1)
    $n_array[$entry][2] = StringMid($aFiles[$i], 1, 12)
    $entry += 1 ;Index um 1 erhöhen
    EndIf
    Next
    ReDim $n_array[$entry][3]

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

    For $i = 0 To UBound($n_array)
    If $n_array[$i][2] = $n_array[$i+1][2] Then
    $n_array[$i+1] &= '|'
    If $n_array[$i] = "|" Then
    FileMove($pfad & $n_array[$i] & ".ipg" , $pfad & "Abfalleimer")
    EndIf
    EndIf
    Next

    [/autoit]

    leertaste

  • Array beabeiten

    • leertaste
    • 5. Dezember 2007 um 21:59

    Hallo zusammen,

    nach einem FileListToArray und einem ArraySort schaut das array so aus.

    IMG_123456_A 20071202180000 IMG_123456
    IMG_123456_10 20071205180100 IMG_123456
    IMG_123456_2 20071204175900 IMG_123456
    IMG_123456_1 20071203170000 IMG_123456

    Es soll die Datei mit der höchsten laufenden Nummer gelöscht werden (ist auch immer die aktuellste), also die _10.

    Eine Sortierung nach Datum und Dateinamen (Spalte 1) ergibt das array.

    Mein erster Versuch sollte eigentlich ganz einfach sein (ohne Rücksicht auf Datum und laufende Nummer),deshalb die 3 Spalte mit gekürzten Dateinamen.

    So schaut der erste Code aus, der scheitert und ich weis nicht weiter.

    Spoiler anzeigen
    [autoit]

    For $i = 0 To UBound($n_array)
    If $n_array[$i][2] = $n_array[$i+1][2]
    Then $n_array[$i+1] &= '|'
    If $n_array[$i] = "|" Then
    FileMove($pfad & $n_array[$i] & ".ipg" , $pfad & "Abfalleimer")
    EndIf
    EndIf

    [/autoit]

    Fehlermeldung:

    ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:

    Wo liegt das Problem?

    Danke.

    Bis bald

    leertaste

  • _FileListToArray

    • leertaste
    • 1. Dezember 2007 um 22:52

    Hallo,

    bernd670 : Danke für die Info, bin beruhigt........

    @progandy: Danke für den Tipp.

    Wieso hängst Du an Eintrag aller Daten ein ReDim dran? Eigentlich müsste doch alles passen, oder?

    Bis bald

    leertaste

  • _FileListToArray

    • leertaste
    • 30. November 2007 um 16:14

    Hi progandy,

    Danke für den Tipp. Habs gleich ausprobiert mit ca. 7000 Dateien, aber hier schleicht sich ein Fehler ein.

    Ab der Zeile 3999 wird die Col0 und Col1 in die Row geschrieben.

    [3997] 12345678911.txt 20071121073054
    [3998] 12345678911.txt 20071121073054
    [3999]|12345678911.txt|20071121073054


    Seltsam....

  • _FileListToArray

    • leertaste
    • 30. November 2007 um 08:15

    Hallo zusammen,

    die leeren Zeilen habe ich mit ReDim beseitigen können. Jetzt aber taucht ein Eintrag mehrmals auf.

    [0] 12345678911.txt
    [1] 12345678911.txt
    [2] 12345678911.txt
    [3] 12345678911.txt
    [4] 12345678912.txt

    So sieht der code aus:

    Dim $n_arr[1]
    $sname = ''

    For $i = 1 to $a_Files[0]
    If StringLen($a_Files[$i]) > 14 Then $sname = $a_Files[$i]
    If $n_arr[Ubound($n_arr)-1] <> '' Then
    ReDim $n_arr[Ubound($n_arr)+1]
    EndIf
    $n_arr[Ubound($n_arr)-1] = $sname
    Next

    Was habe ich falsch gemacht?

    Danke.

    Bis bald

    leertaste

  • _FileListToArray

    • leertaste
    • 29. November 2007 um 11:57

    Hallo,

    danke. Es geht ja noch einfacher.

    Um das ganze in ein array zu schreiben habe ich folgendes versucht.

    Spoiler anzeigen

    Dim $n_array[Ubound($aFiles)][2]
    $FileLen6 = ""

    For $i = 1 To $aFiles[0]
    If StringLen($aFiles[$i]) >= 14 Then $FileLen6 = $aFiles[$i]
    $n_array[$i][0] = $FileLen6
    $n_array[$i][1] = FileGetTime($pfad & "\" & $FileLen6, 0, 1)
    Next

    Irgendwie schaut das array nicht so gut aus.

    Irgendwie sollte ja ein ReDim erfolgen da ja das array $aFiles ja nicht komplett genutzt wird.

    Edit1:
    Hab vergessen zu zeigen wie es ausschaut....

    [0]
    [1]
    [2]
    [3] 12345678911.txt
    [4] 12345678912.txt

    Für jede Datei die kürzer ist als 14 Stellen erfolgt ein Leerfeld.


    Wie könnte man es besser machen?

    Danke.

    leertaste

  • _FileListToArray

    • leertaste
    • 28. November 2007 um 23:26

    Hi,

    Danke, werd ich mir mal in einer ruhigen Stunden mal genehmigen.......

    Ich glaube aber zuerst müssen die einfachen Anfängerfragen erst klar sein.

    leertaste

  • _FileListToArray

    • leertaste
    • 28. November 2007 um 23:18

    Hi,

    interessante Möglichkeit, aber mit StringRegExp hab ich mich noch nicht beschäftigt.

    Die Hilfe dazu ist eine schwere Kost.

    Vielleicht hilft mir ja deine Anleitung, konnte sie aber auf die schnelle nicht finden.

    Danke für die Hilfe.

    leertaste

  • _FileListToArray

    • leertaste
    • 28. November 2007 um 20:16

    Hallo,

    leider ist dieser Thread irgendwie verschwunden ..... also nochmal.

    Laut Hilfe kann man ja Fragezeichen eingeben um die Länge des zu lesenden Dateinamen zu steuern.

    _FileListToArray(@ScriptDir, "???????.jpg", 1)

    Bei der Angabe von 6 Fragezeichen werden auch nur Dateien mit 6 Zeichen berücksichtigt.

    Verwende ich aber 7 Fragezeichen werden auch 12-stellige Dateinamen gelesen.

    Ist dies ein Fehler?

    Danke.

    leertaste

  • Dateien sortieren und löschen

    • leertaste
    • 21. November 2007 um 16:23

    Hallo,

    hat hierzu niemand einen Tipp.

    Danke schon mal.

    leertaste

  • Messagebox während einer laufenden Installation anzeigen

    • leertaste
    • 21. November 2007 um 16:20

    Hi,


    1000 Dank, das wars.

    leertaste

  • Messagebox während einer laufenden Installation anzeigen

    • leertaste
    • 21. November 2007 um 15:56

    Hallo zusammen,

    gibt es eine Möglichkeit solange die Installation läuft ein kleines Fenster einzublenden ohne irgendeinen Button und das sich dann selbstständig schließt?

    Mit der Msgbox konnte ich es nicht.

    Danke.

    Bis bald
    leertaste

  • Dateien sortieren und löschen

    • leertaste
    • 19. November 2007 um 23:14

    Hallo zusammen,

    hat jemand einen Tipp.

    Danke.

    Bis bald

    leertaste

  • Dateien sortieren und löschen

    • leertaste
    • 18. November 2007 um 18:37

    Hi,

    leider nein, auch nicht nach zig Versuchen.

    Meine beiden letzten Versuche kannst Du ja sehen.

    Bis bald,

    leertaste

  • Dateien sortieren und löschen

    • leertaste
    • 18. November 2007 um 11:59

    Hallo zusammen,


    jetzt versuchte ich mal Schritt für Schritt auszuführen, ohne gleich die 2. Spalte des arrays ins spiel zu bringen. Klappte aber auch nicht.

    Hier sollten alle Dateien verschoben werden deren Dateiname weniger als 12 Stellen hat.

    Leider wieder kein Erfolg......, bin am verzweiflen.

    Spoiler anzeigen
    [autoit]

    #Include <File.au3>
    #Include <Array.au3>

    $path1 = "C:\Dokumente und Einstellungen\All Users\Dokumente"
    $path2 = "C:\Dokumente und Einstellungen\All Users\Dokumente\old"

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

    $FileList = _FileListToArray($path1 & "\", '*.jpg', 1)
    If @error = 1 Then
    MsgBox(0, "", "No Files\Folders Found.")
    Exit
    EndIf

    Global $new_A[UBound($FileList) ][2]

    For $i = 1 To UBound($FileList) - 1
    $new_A[$i][0] = $FileList[$i]
    $new_A[$i][1] = FileGetTime($path1 & "\" & $FileList[$i], 0, 1)
    Next
    _ArraySort($new_A, 1, 1, 0, 2, 0)
    ;_ArrayDisplay($new_A, "Dateiliste")

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

    For $i = 1 To UBound($FileList) - 1
    If $i = Stringlen($new_A[$i][0]) < 12 Then $new_A[$i][0] &= "|"
    Next

    For $i = 1 To UBound($FileList) - 1
    If $i = $new_A[$i][0] = "|" Then FileMove($path1 & "\" & $new_A[$i][0], $path2)
    Next

    [/autoit]

    Schönen Sonntag

    leertaste

  • Dateien sortieren und löschen

    • leertaste
    • 17. November 2007 um 22:03

    Hi,

    leider gelingt es mir nicht die Dateien zu löschen.

    Es sollen nur Dateinamen die mehr als 12 Zeichen haben verglichen werden, ob mehrfach vorhanden, und dann soll die jüngste erhalten bleiben.

    Wo liegt mein Fehler?

    Spoiler anzeigen
    [autoit]

    #Include <File.au3>
    #Include <Array.au3>

    $path1 = "C:\Dokumente und Einstellungen\All Users\Dokumente"
    $path2 = "C:\Dokumente und Einstellungen\All Users\Dokumente\old"

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

    $FileList = _FileListToArray($path1 & "\", '*.jpg', 1)
    If @error = 1 Then
    MsgBox(0, "", "No Files\Folders Found.")
    Exit
    EndIf

    Global $new_A[UBound($FileList) ][2]

    For $i = 1 To UBound($FileList) - 1
    $new_A[$i][0] = $FileList[$i]
    $new_A[$i][1] = FileGetTime($path1 & "\" & $FileList[$i], 1, 1)
    Next
    _ArraySort($new_A, 1, 1, 0, 2, 0)
    ;_ArrayDisplay($new_A, "Dateiliste")

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

    For $i = 1 To UBound($FileList) - 1
    If Stringlen($new_A[$i][0]) > 12 Then $new_A[$i][0] = StringLeft($new_A[$i][0], 12)
    If $new_A[$i][1] > $new_A[$i][1] then $FileList[$i] &= "|"
    Next

    For $i = 1 To UBound($FileList) - 1
    If $new_A[$i][0] <> "|" Then FileMove($path1 & "\" & $new_A[$i][0], $path2)
    Next

    [/autoit]

    Danke für eure Hilfe.

    ciao

  • FileMove arbeitet nicht

    • leertaste
    • 13. November 2007 um 12:50

    Hi Mignon,

    ja das wars! DANKE!!!!!!!!!!!!!!!!!!!!!

    Ciao

  • FileMove arbeitet nicht

    • leertaste
    • 13. November 2007 um 12:08

    Hallo zusammen,


    was ist hier falsch?
    Wenn eine oder beide Dateien vorhanden sind und älter als 5 Minuten soll die jeweilige Datei verschoben werden und dies im log vermerkt werden.

    Aber beides klappt nicht. Bin am verzweifelen, wahrscheinlich hab ich Tomaten auf den Augen oder so ......

    Danke für die Hilfe....

    Spoiler anzeigen
    [autoit]

    #include <date.au3>
    #include <file.au3>

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

    $Dateiname1 = "test1"
    $Dateiname2 = "test2"
    $path1 = "D:\Temp"
    $path2 = "D:Temp\Old"

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

    $now = _NowTime(5)
    $now = StringReplace($now, ":", "")

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

    If FileExists($path1 & "\" & $Dateiname1) Then
    $t = FileGetTime($path1 & "\" & $Dateiname1, 2, 0)
    $filetime1 = $t[3] & ":" & $t[4] & ":" & $t[5]
    $filetime1 = StringReplace($filetime1, ":", "")
    If $now - $filetime1 > 500 Then
    FileMove($path1 & "\" & $Dateiname1, $path2 & "\", 1)
    _FileWriteLog($path2 & "\" & "log.txt", $Dateiname1 & " verschoben")
    EndIf
    ;MsgBox(0, "unterschied " & $Dateiname1, $now - $filetime1)
    If FileExists($path1 & "\" & $Dateiname2) Then
    $t = FileGetTime($path1 & "\" & $Dateiname2, 2, 0)
    $filetime2 = $t[3] & ":" & $t[4] & ":" & $t[5]
    $filetime2 = StringReplace($filetime2, ":", "")
    If $now - $filetime2 > 500 Then
    FileMove($path1 & "\" & $Dateiname2, $path2 & "\", 1)
    _FileWriteLog($path2 & "\" & "log.txt", $Dateiname2 & " verschoben")
    EndIf
    ;MsgBox(0, "unterschied " & $Dateiname2, $now - $filetime2)
    EndIf
    Else
    ;MsgBox(0, "Datei vorhanden?", "Nein " & $now, 1)
    _FileWriteLog($path2 & "\" & "log.txt", "keine Datei vorhanden")
    EndIf

    [/autoit]

    Bis bald
    leertaste

  • Dateien sortieren und löschen

    • leertaste
    • 13. Februar 2007 um 21:44

    Mir ist gar nicht klar wie man das "Kriterium" eingibt.

    Der Ansatz lautet die jüngste Datei einer Gruppe nicht markieren.

    Wie kann ich denn "die jüngste" eingeben?


    Danke.

  • Dateien sortieren und löschen

    • leertaste
    • 12. Februar 2007 um 23:01

    Hi,

    mh.... schwierig.

    Es soll ja nur die aktuellste Datei einer Dateifamilie vorhanden sein.

    Heisst dies man müsste nur die ersten 12 Stellen des Dateinamens in das array einlesen und dann das Erstellungsdatum hizufügen.

    Wie kann man den sagen, das die aktuellste Datei nicht markiert werden soll bzw. die älteren gelöscht werden sollen?

    Danke, Ciao

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™