Manipulação arquivos

Discussão em 'Progress 4GL' iniciado por Felipe Amaral de Souza, Agosto 12, 2014.

  1. Felipe Amaral de Souza

    Felipe Amaral de Souza Membro Participativo

    Boa tarde! Gostaria de fazer um programa para varrer um determinado diretório e buscar arquivos de uma determinada extensão para então renomeá-los de acordo com uma lógica específica.
    Só consegui trazer a relação de arquivos em um arquivo (os-command silent dir com output) e isso não me permite alterar esses arquivos, apenas visualizá-los... Alguém já fez algo parecido e pode me enviar a lógica ou comando utilizado?

    Obrigado!
  2. pizzaia

    pizzaia Membro Participativo

    olá. recortei de um programa que tenho, mas não testei. mas acredito que vá te ajudar no que esquema que voce já fez.

    Código:
    define temp-table tt-lista-arquivo
        field caminho as character format "x(50)" /* contem path + nome  */
        field dt-mod  as date
        field criacao as date
        field nome    as character format "x(25)"
        .   
       
    define variable v-aux as character no-undo.
    
    INPUT THROUGH VALUE("dir /b/s C:\TESTE\*.TXT "  ).
    REPEAT :
        create tt-lista-arquivo.
        IMPORT tt-lista-arquivo no-error.
        if NOT ERROR-STATUS:ERROR then do:
            v-aux = extractFileName(tt-lista-arquivo.caminho).
            assign tt-lista-arquivo.nome  = substring(v-aux, 1 , (length(v-aux) - 2)).
        end.
    END.                                                                                         
    INPUT CLOSE.
    
    Felipe Amaral de Souza curtiu isso.
  3. Felipe Amaral de Souza

    Felipe Amaral de Souza Membro Participativo

    Você tem o código da função 'extractFileName'?

    Obrigado!
  4. pizzaia

    pizzaia Membro Participativo

    segue
    Código:
    function extractFileName returns character
        ( input filename_ as character ):
    
        define variable tamanho as integer no-undo.
        define variable counter as integer no-undo .
        define variable str as character no-undo .
       
        assign tamanho = length(trim(fileName_)) .
        repeat counter = tamanho to 1 by -1  :
             assign str = substring( fileName_, counter, 1) .
             if (str = '/') or (str = '\') then
                 leave.
        end.
         return substring( fileName_, ( counter + 1 ) ) .
    end.
    
    function extractFilePath returns character
        ( input filename_ as character ):
        return replace(fileName_, extractFileName(fileName_), "") .
    end.
    
    Felipe Amaral de Souza curtiu isso.
  5. Felipe Amaral de Souza

    Felipe Amaral de Souza Membro Participativo

    A caminho está vindo somente até o espaço (os arquivos possuem espaço no nome). Tem algum parâmetro para pegar todo o caminho, inclusive a extensão?

    Obrigado!
  6. jaisonantoniazzi

    jaisonantoniazzi Membro Ativo

    Felipe Amaral de Souza curtiu isso.

Compartilhe esta Página