Dateien ausschließen

  • Hi,

    gibt es ne möglichkeit einzelne Dateien auszuschließen? z.b. .dat Dateien?

    gruß

    Einmal editiert, zuletzt von gorgo1984 (1. April 2009 um 18:59)

  • Ich habe einen Ordner den ich durchsuche möchte. aber dort sollen die *.dat ausgeschlossen werden.

    Gruß

    • Offizieller Beitrag

    Ich habe einen Ordner den ich durchsuche möchte

    Womit möchtest du durchsuchen? - Mit einer Lupe? :evil:
    Ist es denn so schwer zu schreiben z.B.: ...Ich möchte mit FileOpenDialog Dateien zum Öffnen anbieten außer *.dat
    Woher sollen wir wissen, mit welcher Funktion du "durchsuchen" willst, geschweige denn was du darunter verstehst?!

  • Mir war das Wort entfallen;-)

    Es ist so, ich möchte den Ordner nach der neuesten Datei durchsuchen, was ja auch mit der funktion die seinerzeit von einem geschrieben wurde. Das klappt auch soweit. Aber als aktuellste datei ist eine ".dat" datei. und diese sollten ausgeschlossen werden.

    Es geht um das Fileopen;-)

  • Also folgendes Beispiel:

    sortiert nach änderungsdatum:

    test.dat
    1.txt
    2.txt
    3.txt

    diese test.dat datei soll ausgeschlossen werden. aktuellste datei soll die 1.txt sein nicht die test.dat

    Anmerkung die .dat Datei darf nicht gelöscht werden

    Einmal editiert, zuletzt von gorgo1984 (1. April 2009 um 11:57)

  • Hallo.

    Also Du hast dann ja bereits eine Datei.

    Habe gerade in meinen Papierordner mit den Ausdrucken von Beispielscripten etwas gefunden. Habe ich Dir mal kurz von Papier abgetippt und angepaßt. Original war das Script von Oscar oder BugFix.

    Spoiler anzeigen
    [autoit]


    $file = FileOpen("neu.txt", 0) ; das ist die Quelldatei
    $neu1 = FileOpen("neu1.txt", 1) ; hier sind die Zeilen mit *.dat drinne
    $neu2 = FileOpen("neu2.txt", 1) ; hier sind die Zeilen ohne *.dat drinne
    $letztenvier = 0
    ; Check if file opened for reading OK
    If $file = -1 Then
    MsgBox(0, "Error", "Unable to open file.")
    Exit
    EndIf

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

    ; Read in lines of text until the EOF is reached
    While 1
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop
    $text = StringRight($line,4)
    If $text = ".dat" Then
    If $letztenvier = 0 Then
    FileWriteLine($neu1,$line&@CRLF)
    Else
    FileWriteLine($neu2,$line&@CRLF)
    EndIf
    Else
    $letztenvier = 1
    FileWriteLine($neu2,$line&@CRLF)
    EndIf
    Wend

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

    FileClose($file)
    FileClose($neu1)
    FileClose($neu2)

    [/autoit]

    Evtl. Hilfe es Dir ja.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Das " .dat" ist ja ne Dateiendung und steht nicht in der Zeile nicht der datei drin.

    Die Suche nach der Aktuellsten Datei sieht so aus, kommt von BugFix glaube ich

    Spoiler anzeigen
    [autoit]


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

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

    $aFilelist = _FileListToArray(@DesktopDir)
    Dim $aFiledate[$aFilelist[0]+1]
    For $i = 1 To $aFilelist[0]
    $aFiledate[$i] = FileGetTime(@DesktopDir & '\' & $aFilelist[$i], 0, 1)
    Next

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

    MsgBox(0, 'Test', 'Die aktuellste Datei ist: ' & $aFilelist[_ArrayMaxIndex($aFiledate, 1)])

    [/autoit]

    Wie lege ich das fest das er mir nicht die aktuellste sondern die an der 2.stelle ausgibt?

    gruß

  • Nimm ein 2D-Array und sortiere das dann nach dem Datum ;) Dann kannst du einen Zähler hochzählen, bis du einen Eintrag ohne .dat-Endung findest.

    Spoiler anzeigen
    [autoit]

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

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

    $ORDNER = @DesktopDir
    $aFilelist = _FileListToArray($ORDNER)
    Dim $aFiledate[$aFilelist[0]+1][2]
    For $i = 1 To $aFilelist[0]
    $aFiledate[$i][0] = FileGetTime($ORDNER & '\' & $aFilelist[$i], 0, 1)
    $aFiledate[$i][1] = $aFilelist[$i]
    Next
    $aFiledate[0][0] = $aFilelist[0]
    _ArraySort($aFiledate, 1, 1) ; das neueste Datum als erstes

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

    ; den Zähler so lange hochzählen, bis ein Eintrag gefunden wird, der nicht mit .dat aufhört.
    For $aktuellIndex = 1 To $aFiledate[0][0]
    If StringRight($aFiledate[$aktuellIndex][1], 4) <> ".dat" Then ExitLoop
    Next

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

    MsgBox(0,"","Die aktuellste nicht-dat Datei ist " & $aFiledate[$aktuellIndex][1] )

    [/autoit]