如何从目录中读取所有文件并将文件移动到正在进行的 openge 4gl 中的另一个目录?

How to read all the files from a directory and move files to another directory in progress openedge 4gl?

我需要一次读取一个文件夹中所有文件的内容,读取后将文件移动到另一个文件夹。 我已经硬编码读取单个文件。 将文件 "E:\New\a.txt" 中的 lob 复制到 c-edistring .

假设有三个文件 a.txt , b.txt , c.txt .

读取 a.txt 后,应将文件移动到另一个文件夹 E:\Old。其次是 b 和 c 。

INPUT FROM OS-DIR 语句允许您检索文件夹中所有文件的列表。

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.    

要移动文件,您不需要使用 COPY-LOB,它将文件内容复制到内存中。

OS-COPY VALUE (cFileLong) VALUE (SUBSTITUTE ("e:\Old\&1", cFileShort) .
IF OS-ERROR = 0 THEN 
    OS-DELETE VALUE (cFileLong) . 

在上面的循环中,将在不将完整文件读入内存的情况下进行移动。

当您可以依靠 .NET(Windows、OpenEdge 10.2B 及更高版本)时,您也可以使用 .NET 类 进行文件操作,类似于 https://msdn.microsoft.com/en-us/library/cc148994(v=vs.100).aspx

几年前我写了一个工具程序来做你想做的事——你可以在这里得到一份副本: https://community.progress.com/community_groups/openedge_general/w/openedgegeneral/1615.directory-tools