Página 1 de 1

Como localizar um arquivo informado

Enviado: 28 Jun 2017 17:00
por porter
Olá pessoal,
Existe algum comando no Harbour 3.2.0dev para procurar um arquivo em uma determinada pasta ?
Gostaria de informar por Exemplo "11402", se esse numero estiver contido no código chave,
atribuir o código inteiro para uma variável.


c:\AcbrMonitorPlus\Arqs\Retorno\35170108050974000196550010000114021000114020.xml

Harbour 3.2.0dev (console)

Como localizar um arquivo informado

Enviado: 29 Jun 2017 09:35
por Kapiaba
Fácil:

Código: Selecionar todos

      // PEGA O .PDF DO DANFE GERADA PELO UNIDANFE.EXE
      cPdfNfeUni := aFindFile( ALLTRIM( cCHAVE ) + "-danfe.pdf", ;
                               cDirExe+"unidanfe\email\anexos" )

      // Exemplo
      // aDir := aFindFile("23120711522734000157550010000000061000000060_10-cce.pdf", "c:\INST_NFE\unidanfe\email\anexos\" )

      IF .NOT. EMPTY( cPdfNFeUni )

         cArq3 := cPdfNFeUni[1]

         cPdfNfeUni := ALLTRIM( cArq3 )

      ELSE

         cPdfNFeUni := ""   // Para nao quebrar o envio de email

         cArq  := ""
         cExt  := ""
         cPath := ""

         cPath := cDirExe+"UNIDANFE\EMAIL\ANEXOS\"

         //cFile := cChave+"-danfe.pdf"  // exemplo
         cFile := ALLTRIM( cCHAVE ) + "-danfe.pdf"

         // Isto funciona na minha versao 2.7 superiores e RECURSIVE
         aFile := DIRECTORYRECURSE( cPath + cFile )

         If Len(aFile)==0

            //? "Arquivo do DANFE Não Encontrado"
            cPdfNFeUni := ""

         Else

            For nI := 1 to Len( aFile )

               hb_FNameSplit( aFile[nI,1], @cPath, @cArq, @cExt )

               //? cPath+" "+cArq+" "+cExt+" Perfeito Emotta!"

            Next

            aFiles := ALLTRIM( cPath+cArq+cExt )

            cPdfNFeUni := aFiles

         EndIf

      ENDIF
Abs.

Como localizar um arquivo informado

Enviado: 29 Jun 2017 10:40
por JoséQuintas
Pelo que entendi, sabe a pasta, mas não sabe o nome do arquivo.

Código: Selecionar todos

aFleList := Directory( "*11402*.xml" )
Mas o melhor seria colocar exatamente na posição do número, porque pode coincidir muita coisa, principalmente se fosse a nota número 1.
E pode ter emissão, cancelamento, carta de correção, NFE, CTE, MDFE, etc, com mesmo número.
Quanto mais detalhes da chave, mais chance de pegar o que realmente quer.

Como localizar um arquivo informado

Enviado: 29 Jun 2017 18:12
por Toledo
JoséQuintas escreveu:aFleList := Directory( "*11402*.xml" )
Não testei, mas será que isto não dá certo:

Código: Selecionar todos

aFleList := Directory( "*11402?-nfe.xml" )

ou

aFleList := Directory( "*11402?.xml" )
Abraços

Como localizar um arquivo informado

Enviado: 29 Jun 2017 20:05
por porter
Testei essas 3 formas, mas todas elas, traz como resultado todos os arquivos da pasta informada,
elas não trazem, como no exemplo somente o arquivo que contenha "12334"

Código: Selecionar todos


aFileList := Directory( cPastaFiles, "*12334*.xml" )
aFileList := Directory( cPastaFiles, "*12334?-nfe.xml" )
aFileList := Directory( cPastaFiles, "*12334?.xml" )

IF LEN(aFileList) > 0
    xChave := LEFT(aFileList[1,1],44)
ENDIF



Harbour 3.2.0dev (console)

Como localizar um arquivo informado

Enviado: 29 Jun 2017 20:41
por Toledo
Amigo, seu código está errado. Teste este:

Código: Selecionar todos

PROCEDURE Main
      LOCAL aFiles

      aFiles := Directory( "*12334?-nfe.xml" )  //ou Directory( "*12334?.xml" )
      AEval( aFiles, {|a| QOut( a[1] ) } )

RETURN
Testei aqui e funcionou certinho.

Abraços

Como localizar um arquivo informado

Enviado: 30 Jun 2017 08:10
por Jairo Maia
Olá Pessoal,

Da forma que o Toledo fez funciona corretamente, porém somente na pasta local. Se desejar pesquisar em outra pasta, precisa colocar a pasta e a máscara como um único parâmetro. Se usar 2 parâmetros falha, exemplo:

Código: Selecionar todos

aFileList := Directory( cPastaFiles + "*12334*.xml" )

Como localizar um arquivo informado

Enviado: 30 Jun 2017 10:57
por porter
precisa colocar a pasta e a máscara como um único parâmetro.
Realmente, eu cometi esse erro.
E pode ter emissão, cancelamento, carta de correção, NFE, CTE, MDFE, etc, com mesmo número.
Quanto mais detalhes da chave, mais chance de pegar o que realmente quer.
No caso de Carta de Correção e Cancelamento, é o mesmo numero, mas estão em pastas
diferentes, por exemplo:
Carta de Correção está em Evento/CCe
Cancelamento está em Evento/Cancelamento