Array ??? auslesen von Dateinnamen und verschieben aus einem anderen Ordner

  • Hallo,

    stehe voll auf dem Schlauch und habe noch keine richtige Idee wie ich es machen soll.

    folgendes funktioniert schon mit meinem Skript.

    1. eine oder mehrere Datei kommt in den Ordner "$folder1"
    2. sobald nicht neues dazukommt werden diese Dateien in Ordner "$folder2" verschoben
    3. verarbeitet java Programm
    4. Dateien aus Ordner "$folder3" werden nach "$folder4" verschoben
    5. fertige Datei wird in "$folder5" verschoben

    wo liegt das Problem.

    Ich muss die Dateien aus Ordner 1 zwar einlesen (Namen) allerdings dann aus einem anderen Ordner nehmen wo mehr als nur diese Dateien liegen.

    z.B.
    gelesen
    D:\Program Files (x86)\abc\PDF\ausPDFCreator\1.pdf

    muss allerdings von Verzeichnis

    D:\Program Files (x86)\habe_gar_nichts_damit_zu_tun\1.pdf

    kopiert werden.


    [autoit]

    #include <File.au3>

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

    $folder1 = "D:\Program Files (x86)\abc\PDF\ausPDFCreator\" ;Eingang
    $folder2 = "D:\Program Files (x86)\abc\PDF\zumerstellen\" ;verschieben für erstellen einer PDF
    $folder3 = "D:\Program Files (x86)\abc\PDF\erledigt\" ;nacherstellen archiveren
    $folder4 = "D:\Program Files (x86)\abc\PDF\Fertig\" ;erstellte Ausgangsdatei
    $folder5 = "D:\Program Files (x86)\abc\Serverprint\printed\" ;Serverprint Pfad

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

    While 1
    sleep (2500)
    $dir1 = _FileListToArray($folder1, '*.pdf')
    If not @error Then
    EndIf
    sleep (2500)
    $dir2 = _FileListToArray($folder1, '*.pdf')
    If not @error and IsArray ($dir1) Then
    If($dir1[0]=$dir2[0]) Then
    ;MsgBox (0,"Sammel beendet", "PDF wird erstellt",1)
    FileMove ($folder1&"*.pdf",$folder2&"*.pdf")
    sleep (2000)
    run ('cmd /c java -jar "C:\\Program Files\\PDF Split and Merge Basic\\lib\\pdfsam-console-2.4.1e.jar" -o "D:\fertigedatei.pdf" -d "D:\\Program Files (x86)\\abc\\PDF\\zumerstellen\\" concat',"", @SW_HIDE)
    Sleep (2000)
    FileMove ($folder2&"*.pdf",$folder3&"*.pdf")
    $t=filegettime("d:\fertigedatei.pdf",1,1)
    ;MsGBox(0,"Test3",$t,1)
    FileMove ("d:\fertigedatei.pdf",$folder4&$t&".pdf",1)
    sleep (10000)
    EndIf
    EndIf
    WEnd

    [/autoit]

    Bin für jede Hilfe denkbar (Das vorhandene Skript macht sonst genau was ich will)

    Gruß

    Steffen

    2 Mal editiert, zuletzt von SCCSSF (1. Juni 2013 um 23:14)

  • Hallo SCCSSF,

    Ich hoffe das hilft dir:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <File.au3>

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

    Opt('MustDeclareVars', 1)

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

    Local $folder1 = "D:\Program Files (x86)\abc\PDF\ausPDFCreator\"
    Local $folder2 = "D:\Program Files (x86)\abc\PDF\zumerstellen\"
    Local $folder3 = "D:\Program Files (x86)\abc\PDF\erledigt\"

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

    Local $FileList = _FileListToArray($folder1)

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

    For $i = 1 To UBound($FileList) - 1

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

    If FileExists($folder1 & '\' & StringLeft($FileList[$i], StringInStr($FileList[$i], '.', Default, -1) - 1) & '.pdf') = 1 Then
    If FileExists($folder2 & '\' & StringLeft($FileList[$i], StringInStr($FileList[$i], '.', Default, -1) - 1) & '.pdf') = 1 Then
    FileMove($folder3 & '\' & $FileList[$i], $archiv, 9)

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

    EndIf
    EndIf
    Next

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

    Macht das so wie ich das ganze verstanden habe.
    Checkt File aus Ordner 1 mit gleichnamigen File aus Ordner 2 ab.
    Wenn Ok dann von Ordner 2 File in Ordner 3 verschieben.

    Edit: Habe gerade gesehen das du aus Ordner 2 auch kopieren willst. Verwende bei Filemove einfach Filecopy.

    MfG Ru642

  • Danke werde ich mal morgen testen.

    Gruß

    Steffen

  • So habe mal meinen Fertigen Quelltext hier noch eingestellt.

    Aktuell sollte es funktionieren. Die Praxis sollte sich zeigen.
    Opt('MustDeclareVars',1) musste ich deaktiviert weil es sonst nicht funktioniert hat.

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    #include <Array.au3>

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

    ; Opt('MustDeclareVars', 1) (Musste ich raus nehmen sonst ging es nicht)

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

    $folder1 = "D:\Program Files (x86)\abc\PDF\ausPDFCreator\" ;Eingang
    $folder2 = "D:\Program Files (x86)\abc\PDF\zumerstellen\" ;verschieben für erstellen einer PDF
    $folder3 = "D:\Program Files (x86)\abc\PDF\erledigt\" ;nacherstellen archiveren
    $folder4 = "D:\Program Files (x86)\abc\PDF\Fertig\" ;erstellte Ausgangsdatei
    $folder5 = "D:\Program Files (x86)\abc\Serverprint\printed\" ;Serverprint Pfad
    $folder6 = "D:\Program Files (x86)\abc\PDF\erledigt1\" ;nacherstellen archivieren

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

    While 1
    sleep (2500)
    $dir1 = _FileListToArray($folder1, '*.pdf')
    If not @error Then
    EndIf
    sleep (2500)
    $dir2 = _FileListToArray($folder1, '*.pdf')
    If not @error and IsArray ($dir1) Then
    If($dir1[0]=$dir2[0]) Then
    ;MsgBox (0,"Sammel beendet", "PDF wird erstellt",1)
    sleep (10000)
    Local $FileList = _FileListToArray($folder1)
    For $i = 1 To UBound($FileList) - 1
    If FileExists($folder1 & '\' & StringLeft($FileList[$i], StringInStr($FileList[$i], '.', Default, -1) - 1) & '.pdf') = 1 Then
    If FileExists($folder5 & '\' & StringLeft($FileList[$i], StringInStr($FileList[$i], '.', Default, -1) - 1) & '.pdf') = 1 Then
    Filecopy($folder5 & '\' & $FileList[$i], $folder2, 9)
    FileMove($folder1 & '\' & $FileList[$i], $folder3, 9)
    EndIf
    EndIf
    Next
    FileMove ($folder1&"*.pdf",$folder3&"*.pdf")
    sleep (2000)
    run ('cmd /c java -jar "C:\\Program Files\\PDF Split and Merge Basic\\lib\\pdfsam-console-2.4.1e.jar" -o "D:\fertigedatei.pdf" -d "D:\\Program Files (x86)\\myfactory\\PDF\\zumerstellen\\" concat',"", @SW_HIDE)
    Sleep (2000)
    FileMove ($folder2&"*.pdf",$folder6&"*.pdf")
    $t=filegettime("d:\fertigedatei.pdf",1,1)
    ;MsGBox(0,"Test3",$t,1)
    FileMove ("d:\fertigedatei.pdf",$folder4&$t&".pdf",1)
    sleep (10000)
    EndIf
    EndIf
    WEnd

    [/autoit]