Ordner Datum

  • Hallo ich bin neu, und noch nicht besonders erfahren in Autoit (hab heute erst angefangen)

    Ich möchte das autoit in pfad $eingebenerpfad einen Ordner erstellt mit dem aktuellen Datum in 2007-07-17 Format.
    Dann soll die Dateien von $eingebenerpfad in den datums Ordner verschiebenn die älter als $eingegebenetage sind.
    Könnt ihr mir helfen?

  • was muss ich da ergänzen, bzw was ist falsch?

    Dircreate ($pfad & @YEAR & "." & @MON & "." & @MDAY)

  • ist hinten am $pfad auch ein "\"

    Dircreate ($pfad & @YEAR & "." & @MON & "." & @MDAY)

    bzw kannst du mal $pfad posten also ein Beispiel

    [autoit]


    If Dircreate ($pfad&"\"&@YEAR&"."&@MON&"."&@MDAY) = 1 Then MsgBox(0,"", "Dir Created")

    [/autoit]
  • danke hat mir schon geholfen lag an dem / und & zeichen.
    Aber das nächste Problem steht schon in den startlöchern :)

  • so schnell kann ich ja garnicht tippen hehe ...
    so nächstes problem: also da funktioniert wohl so ziemlich nichts.

    Also er soll alle dateien die älter sind als &tage von $pfad nach
    $pfad&"\"&$datum verschieben

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

    #include <GUIConstants.au3>
    #include <Date.au3>

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

    ;GUICreate("My GUI")
    GUISetState (@SW_SHOW)

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

    $jahr = @YEAR
    $monat = @MON
    $tag = @MDAY
    $datum = $jahr&"-"&$monat&"-"&$tag

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

    $pfad = InputBox("Test1", "Pfad einbegen und auf ok klicken")
    If @error = 1 Then
    MsgBox(4096, AUS)
    Else
    If Dircreate ($pfad&"\"&$datum) = 1 Then MsgBox(0,"", "Dir Created")
    endif

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

    $tage = InputBox("Test2", "Tage einbegen und auf ok klicken")
    If @error = 1 Then
    MsgBox(4096, AUS)
    Else

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

    $timesplit = StringSplit ($datum, ".")
    $datediff = _DateDiff ("D", @Year & "/" & @Mon & "/" & @Mday, $timesplit[3] & "/" & $timesplit[2] & "/" & $timesplit[1])
    If $datediff <= $tage Then FileMove ($pfad, $pfad&"\"&$datum)

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

    EndIf

    [/autoit]



    Edit Mega : Code-Tags

    2 Mal editiert, zuletzt von mamcc (17. Juli 2007 um 15:17)

  • Sry aber das hilft mir ja mal überhaupt nix
    1. Shareware
    2. Fremdprogramm
    3. Will ich auch selber was lernen
    4. kann ich das din nich umprogen

  • [autoit]

    #include <GUIConstants.au3>
    #include <Date.au3>
    #include <File.au3>

    ;GUICreate("My GUI")
    ;GUISetState (@SW_SHOW)

    $datum = @YEAR&"-"&@MON&"-"&@MDAY

    $pfad = InputBox("Test1", "Pfad eingeben und auf ok klicken")
    If @error = 1 Then
    MsgBox(4096, "AUS", "Cancel")
    Else
    If Dircreate ($pfad&"\"&$datum) = 1 Then MsgBox(0,"", "Dir Created")
    EndIf


    $tage = InputBox("Test2", "Tage einbegen und auf ok klicken")
    If @error = 1 Then
    MsgBox(4096, "", "AUS")
    Else
    $tage = StringSplit($tage, ".")
    $files = _FileListToArray(@ScriptDir&"\filedir", 1)
    If IsArray($files) = 1 Then
    For $i = 1 To $files[0]
    $time = FileGetTime($files[$i])
    $datediff = _DateDiff ("D", $time[0]&"/"&$time[1]&"/"&$time[2], $tage[3] & "/" & $tage[2] & "/" & $tage[1])
    If $datediff <= $tage Then
    FileMove (@ScriptDir&"\filedir"&$files[$i], $pfad&"\"&$datum&"\"&$files[$i])
    EndIf
    Next
    EndIf
    EndIf

    [/autoit]

    so jetzt mal testen

    5 Mal editiert, zuletzt von leviathan (17. Juli 2007 um 17:09)

  • Leider funktionierts nicht. Sieht so aus als würde es ab dem Zeitpunkt ab dem der Ordner erstellt wurde nix mehr passiert.

    ich habe mal folgendes geändert von

    [autoit]

    $tage = StringSplit($tage, ".")

    [/autoit]


    nach:

    [autoit]

    $tage = StringSplit($tage, "-")

    [/autoit]


    so weit ich weis definiert das "-" die trennpunkte für das Array das ist bei meinem datumsformat "-" ..... richtig?


    [autoit]

    $files = _FileListToArray(@ScriptDir&"\filedir", 1)

    [/autoit]


    Wieso steht hier @ScriptDir? Das ist doch das Verzeichnis wo das Script liegt.
    Besser wäre es das Programm möglichst variabel zu Programmieren.


    [autoit]

    If IsArray($files) = 1 Then
    For $i = 1 To $files[0]
    $time = FileGetTime($files[$i])
    $datediff = _DateDiff ("D", $time[0]&"/"&$time[1]&"/"&$time[2], $tage[3] & "/" & $tage[2] & "/" & $tage[1])
    If $datediff <= $tage Then
    FileMove (@ScriptDir&"\filedir"&$files[$i], $pfad&"\"&$datum&"\"&$files[$i])

    [/autoit]

    Kannst du mir das etwas genauer erklären? Das Prinzip von einem Array kenne ich aber der Programmaufbau ist mir noch nicht ganz klar. Kannst du sagen was das Programm hier macht? Ihr könnt mich gerne korrigieren.

    Einmal editiert, zuletzt von mamcc (17. Juli 2007 um 20:02)

    • Offizieller Beitrag

    Hi,

    hier mal ein schnellschuss

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #Include <File.au3>
    #Include <Array.au3>
    #Include <Date.au3>
    $Form1 = GUICreate("Skriptname", 613, 214, 193, 119)
    $Group1 = GUICtrlCreateGroup("", 5, 30, 600, 180)
    $quelle_B = GUICtrlCreateButton("Quelle", 15, 55, 75, 25, 0)
    $quelle_I = GUICtrlCreateInput("", 105, 60, 481, 21)
    $ziel_B = GUICtrlCreateButton("Ziel", 15, 90, 75, 25, 0)
    $ziel_I = GUICtrlCreateInput("", 105, 95, 481, 21)
    $days_I = GUICtrlCreateInput("", 15, 130, 75, 21)
    $sl_SL = GUICtrlCreateSlider(105, 125, 480, 45)
    GUICtrlSetLimit(-1, 365, 0)
    $move_B = GUICtrlCreateButton("Verschieben", 15, 170, 175, 25, 0)
    $copy_B = GUICtrlCreateButton("Kopieren", 215, 170, 175, 25, 0)
    $exit_B = GUICtrlCreateButton("Exit", 410, 170, 175, 25, 0)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateLabel("Skriptname", 5, 0, 598, 27)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $quelle_B
    $re = FileSelectFolder('Bitte wählen Sie den Quellordner aus:', '\', 6, @ScriptDir)
    If Not @error Then GUICtrlSetData($quelle_I, $re)
    Case $ziel_B
    $re = FileSelectFolder('Bitte wählen Sie den Zielordner aus:', '\', 6, @ScriptDir)
    If Not @error Then GUICtrlSetData($ziel_I, $re)
    Case $exit_B
    Exit (0)
    Case $move_B
    _move(GUICtrlRead($quelle_I))
    EndSwitch
    GUICtrlSetData($days_I, GUICtrlRead($sl_SL))
    WEnd

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

    Func _move($path)
    $files_A = _FileListToArray($path, '*.*', 1)
    For $i = 1 To UBound($files_A) - 1
    If _olderThanXDays($path, $files_A[$i], GUICtrlRead($days_I)) Then
    ConsoleWrite($path & $files_A[$i] & ' ist älter als die angegebene Tagzahl' & @CRLF)
    ; Was du willst FileMove ...
    EndIf
    Next
    EndFunc ;==>_move

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

    Func _olderThanXDays($path, $file, $days)
    If StringRight($path, 1) <> '\' Then $path &= '\'
    Local $time = FileGetTime($path & $file, 1)
    If _DateDiff('d', $time[0] & '/' & $time[1] & '/' & $time[2] & ' 00:00:00', _DateAdd('d', -($days), _NowCalcDate()) & ' 00:00:00') > 0 Then Return 1
    Return 0
    EndFunc ;==>_olderThanXDays

    [/autoit]

    So long,

    Mega

  • [autoit]

    If IsArray($files) = 1 Then ; prüft ob es auch ein Array ist also ob Datein vorhanden sind
    For $i = 1 To $files[0] ; Schleife die alle Datein im Verzeichnis abarbeitet - $i läuft hier immer und steht für eine Datei im Array
    $time = FileGetTime($files[$i]); Alter herrausfinden
    $datediff = _DateDiff ("D", $time[0]&"/"&$time[1]&"/"&$time[2], $tage[3] & "/" & $tage[2] & "/" & $tage[1]) ; Datediff durchführen
    If $datediff <= $tage Then ; Vergleich
    FileMove (@ScriptDir&"\filedir"&$files[$i], $pfad&"\"&$datum&"\"&$files[$i]) ;Verschieben

    [/autoit]

    ja ich wusste nicht wie du es haben willst deswegen kannst du das auch ändern oder die Version von mega nehmen