2016-04-06 9 views
0

Ich muss den Inhalt aller Dateien in einem Ordner nacheinander lesen und die Datei nach dem Lesen in einen anderen Ordner verschieben. Ich habe hardcoded, um eine einzelne Datei zu lesen. copy-lob von der Datei "E: \ New \ a.txt" nach c-edistring.Wie liest man alle Dateien aus einem Verzeichnis und verschiebt Dateien in ein anderes laufendes Verzeichnis opengee 4gl?

Angenommen, es gibt drei Dateien a.txt, b.txt, c.txt.

Sobald a.txt gelesen wird, sollte die Datei in einen anderen Ordner E: \ Old verschoben werden. gefolgt von b und c.

Antwort

3

Mit der Anweisung INPUT FROM OS-DIR können Sie eine Liste aller Dateien in einem Ordner abrufen.

DEFINE VARIABLE cFileShort AS CHARACTER NO-UNDO . 
DEFINE VARIABLE cFileLong AS CHARACTER NO-UNDO. 
DEFINE VARIABLE cType  AS CHARACTER NO-UNDO. 

INPUT FROM OS-DIR ("e:\New") . 

REPEAT: 
    IMPORT cFileShort cFileLong cType . 

    /* File or Directory ? */ 
    IF cType MATCHES "*F*" THEN 
     MESSAGE "ShortFileName" cFileShort SKIP 
       "LongFileName" cFileLong . 

END.  

Um die Dateien zu verschieben, müssen Sie nicht COPY-LOB verwenden, das den Dateiinhalt in den Speicher kopiert.

innerhalb der Schleife oben wird die Bewegung ohne das Lesen der vollständigen Dateien in den Speicher tun.

Wenn Sie auf .NET (Windows, Open 10.2b und höher) zählen können Sie auch für Dateioperationen .NET-Klassen verwenden können, ähnlich wie https://msdn.microsoft.com/en-us/library/cc148994(v=vs.100).aspx

+0

Dieser Teil wirft Fehler OS-cOPY VALUE (cFileLong) VALUE (WECHSELN ("e: \ Old \ & 1", cFileShort) IF OS-eRROR = 0 THEN . OS-DELETE VALUE (cFileLong). – mac100

+0

Welcher Fehler wird ausgelöst? –

+0

Sieht so aus, als ob ich eine schließende Klammer vermissen würde. –