A pedido de um amigo segue mais um exemplo de manipulação de arquivos usando a linguagem progress.
Desta vez o objetivo é monitorar um diretório de arquivos temporários, a rotina tem que limpar todos os arquivos onde o tipo do arquivo não faça parte da lista (txt, ord ou bat) ou tenha mais de dois dias armazenado.
Segundo ele esse diretório vai ser usado para fazer upload de relatórios então é gerado um link para download para que outra pessoa o baixe, para não lotar o servidor os arquivos ficam armazenados por dois dias.
define variable tipo as character no-undo. define temp-table ttArquivos field arquivo as character format "x(30)" field diretiorio as character format "x(90)" field tipo as character format "x(5)". OS-COMMAND SILENT VALUE("MOVE " + vArquivo + " " + vDestino). /* Limpando os arquivos de orçamento velhos */ assign vDestino = "C:\temp\". input from OS-DIR(vDestino). REPEAT : CREATE ttArquivos. IMPORT ttArquivos. END. /* Loop nos registros que não são diretorio/pasta */ for each ttArquivos where ttArquivos.tipo <> "D" : /* Se o arquivo realmente existir */ IF SEARCH(ttArquivos.diretiorio) <> ? THEN do: /* Ler dados do arquivo */ assign FILE-INFO:FILE-NAME = ttArquivos.diretiorio. /* Se for arquivo do tipo ord */ if index(ttArquivos.arquivo, ".ord") > 0 then /* Se for mais velho que dois dias */ if FILE-INFO:FILE-MOD-DATE < (today - 2) then do: /* Deleta o arquivo */ OS-DELETE VALUE(ttArquivos.diretiorio). END. /* Pegando apenas a extenção do arquivo */ assign tipo = substring(FILE-INFO:file-name, r-index(FILE-INFO:file-name, ".") + 1,length(FILE-INFO:file-name)). /* Se a extenção não estiver na lista de liberado */ if lookup(tipo, "txt,ord,bat") = 0 then /* Deleta o arquivo */ OS-DELETE VALUE(ttArquivos.diretiorio). END.
Qualquer duvida estou a disposição.