INPUT FROM OS-DIR Statement позволяет вам получить список всех файлов в папке.
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
Эта часть метания ошибки OS-COPY VALUE (cFileLong) VALUE (ЗАМЕНИТЬ ("е: \ Старый \ & 1", cFileShort) IF OS-ERROR = 0 THEN . OS-DELETE VALUE (cFileLong). – mac100
Какая ошибка вызывается? –
Похоже, у меня не было закрывающей скобки. –