Clipper On Line • Ver Tópico - Como localizar um arquivo informado

Como localizar um arquivo informado

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

Como localizar um arquivo informado

Mensagempor porter » 28 Jun 2017 17:00

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)
porter
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1024
Data de registro: 10 Dez 2009 15:44
Cidade/Estado: OLIMPIA-SP
Curtiu: 3 vezes
Mens.Curtidas: 23 vezes

Como localizar um arquivo informado

Mensagempor Kapiaba » 29 Jun 2017 09:35

Fácil:

      // 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.
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1766
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 311 vezes
Mens.Curtidas: 119 vezes

Como localizar um arquivo informado

Mensagempor JoséQuintas » 29 Jun 2017 10:40

Pelo que entendi, sabe a pasta, mas não sabe o nome do arquivo.

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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18150
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Como localizar um arquivo informado

Mensagempor Toledo » 29 Jun 2017 18:12

JoséQuintas escreveu:aFleList := Directory( "*11402*.xml" )

Não testei, mas será que isto não dá certo:

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

ou

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


Abraços
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

Como localizar um arquivo informado

Mensagempor porter » 29 Jun 2017 20:05

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"


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)
porter
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1024
Data de registro: 10 Dez 2009 15:44
Cidade/Estado: OLIMPIA-SP
Curtiu: 3 vezes
Mens.Curtidas: 23 vezes

Como localizar um arquivo informado

Mensagempor Toledo » 29 Jun 2017 20:41

Amigo, seu código está errado. Teste este:

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
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

Como localizar um arquivo informado

Mensagempor Jairo Maia » 30 Jun 2017 08:10

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:
aFileList := Directory( cPastaFiles + "*12334*.xml" )
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

Como localizar um arquivo informado

Mensagempor porter » 30 Jun 2017 10:57

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
porter
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1024
Data de registro: 10 Dez 2009 15:44
Cidade/Estado: OLIMPIA-SP
Curtiu: 3 vezes
Mens.Curtidas: 23 vezes




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 9 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro