FileMove(...) Problem

  • Hallo,

    irgendwie habe ich mich hier total verfranzt ...
    die FileMove Funktion geht nicht FileCopy aber schon.

    Ich vermute mal das die Datei noch verwendet wird an der Stelle wo ich die verschieben will aber ich weis sehe grade nicht so wirklich wo ...
    Es handelt sich um das zweite FileMove() das erste geht
    Kann mir da vieleicht jemand weiterhelfen ? Danke schon mal...

    [autoit]


    ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ; Alle HL7 Dateien finden
    ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    $search = FileFindFirstFile("*.hl7")

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

    ; suche erfolgreich
    If $search = -1 Then
    MsgBox(0, "Fehler", "keine passenden Dateien gefunden")
    Exit
    EndIf

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

    ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ;Xml öffnen und Anfang schreiben
    ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ConsoleWrite('<?xml version="1.0" encoding="ISO-8859-1" ?> ' & @CRLF)
    ConsoleWrite('<patientenliste> ' & @CRLF)

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

    ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ;nächste Datei nehmen
    ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    While 1
    $datei = FileFindNextFile($search)
    If @error Then ExitLoop

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

    ;überprüfung auf sem Datei
    $sem = StringSplit($datei, ".")
    if FileExists($sem[1] & ".sem") Then ;wenn da dann weiter

    $file = FileOpen($datei , 0)
    if $file = -1 Then
    MsgBox(0, "Fehler", "Kann " & $datei & " nicht öffnen!")
    ;Fehler Datei enfernen
    FileMove($datei, "\ging_net\" ,8)
    ;XML schliesen
    ConsoleWrite('</patientenliste> ' & @CRLF)
    Exit
    EndIf

    ;beginne mit lesen der Zeilen
    While 1
    $line1 = FileReadLine($file)
    if @error = -1 then ExitLoop
    ;splitten wenn MSH am Anfang
    $result = StringInStr($line1,"MSH",1,1)

    if $result = 1 then
    ; Zeile in Bestandteile zerlegen delimiters ist |
    $lineArray = StringSplit($line1,"|")
    ;checke Inhalt
    if $lineArray[9] = "ADT^A01" then
    ;fertige Datei verschieben
    FileMove($datei, "\ging\" ,8)
    EndIf
    XML() ;gehe zu XML()
    EndIf
    WEnd
    EndIf
    WEnd

    [/autoit]
  • Hello und :willkommen:
    beim erste filemove geht es?? meinst du dieses:

    [autoit]

    $file = FileOpen($datei , 0)
    if $file = -1 Then
    MsgBox(0, "Fehler", "Kann " & $datei & " nicht öffnen!")
    ;Fehler Datei enfernen
    FileMove($datei, "\ging_net\" ,8)
    ;XML schliesen
    ConsoleWrite('</patientenliste> ' & @CRLF)
    Exit
    EndIf

    [/autoit]


    wenn ja dann ist es kein wunder warum das zweite nie aufgerufen wird (fehler in fileopen)....
    was du da machen willst ist mir nicht wirklich ganz klar also lass ich mal die anderen arbeiten :rolleyes: ;-)^^

    snoozy

  • hallo , nicht ganz ...
    das erste Move ist für die Dateien die nicht eingelesen werden konnten weil wegen Fehler oder sonst was

  • okay dann check ich dein ganzes problem einfach nicht.....
    beschreib doch einfach mal KURZ was du vorhast und was dein AkTUELLES PROBLEM ist(problem bei diesem script oder generelles prob)....
    @meger:nee nicht ganz das eine filemove ist nur für die datein wo das mit fileopen nicht geklappt hat....


    snoozer

    • Offizieller Beitrag

    Hallo!

    In dem Moment wo die Datei verschoben werden soll greift das Programm ja selbst noch darauf zu. Einfach vor dem FileMove noch ein FileClose und danach ein ExitLoop machen dann sollte es gehen.

    [autoit]

    ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ; Alle HL7 Dateien finden
    ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    $search = FileFindFirstFile("*.hl7")

    ; suche erfolgreich
    If $search = -1 Then
    MsgBox(0, "Fehler", "keine passenden Dateien gefunden")
    Exit
    EndIf

    ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ;Xml öffnen und Anfang schreiben
    ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ConsoleWrite('<?xml version="1.0" encoding="ISO-8859-1" ?> ' & @CRLF)
    ConsoleWrite('<patientenliste> ' & @CRLF)

    ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ;nächste Datei nehmen
    ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    While 1
    $datei = FileFindNextFile($search)
    If @error Then ExitLoop

    ;überprüfung auf sem Datei
    $sem = StringSplit($datei, ".")
    if FileExists($sem[1] & ".sem") Then ;wenn da dann weiter

    $file = FileOpen($datei , 0)
    if $file = -1 Then
    MsgBox(0, "Fehler", "Kann " & $datei & " nicht öffnen!")
    ;Fehler Datei enfernen
    FileMove($datei, "\ging_net\" ,8)
    ;XML schliesen
    ConsoleWrite('</patientenliste> ' & @CRLF)
    Exit
    EndIf

    ;beginne mit lesen der Zeilen
    While 1
    $line1 = FileReadLine($file)
    if @error = -1 then ExitLoop
    ;splitten wenn MSH am Anfang
    $result = StringInStr($line1,"MSH",1,1)

    if $result = 1 then
    ; Zeile in Bestandteile zerlegen delimiters ist |
    $lineArray = StringSplit($line1,"|")
    ;checke Inhalt
    if $lineArray[9] = "ADT^A01" then
    ;fertige Datei verschieben
    FileClose($file)
    FileMove($datei, "\ging\" ,8)
    ExitLoop
    EndIf
    XML() ;gehe zu XML()
    EndIf
    WEnd
    FileClose($file)
    EndIf
    WEnd

    [/autoit]
  • ok kurze erklärung...

    ich habe einen Ordner in dem befinden sich täglich c.a. 5000 hl7 Dateien
    jetzt lese ich aus diesen Dateien ab der Zeile PID Daten aus und schreibe diese in eine XML Datei.

    Das Problem dabei ist das die Dateien die schon verarbeitet und in das XML File übertragen wurden aus dem QuellOrdner verschoben werden müssen und da klemmts halt gerade.

    Ich hoffe ich konnte mich so halbwegs rüberbringen was machen will wenn nicht versuche ich es nochmal ..