Jump to content
Fivewin Brasil

Descobrir Onde o Programa Nome.exe, ou teste.ini, está Localizado


marcioe

Recommended Posts

Olá amigos

Tem como Descobrir Onde o Programa Nome.exe, ou teste.ini, está Localizado do computador, como se fosse uma pesquisa

Um amigo me indicou
 

function Main()

   local aFiles := aFindFile( "sac.ini", "c:" )
   local n

   for n := 1 to Len( aFiles )
      MsgInfo( aFiles[ n ] )
   next

return nil

Se o Sac.INI estiver no C: Ele acha, mas no meu caso eu queria que ele localize em que tasta ele está instalado

Por exemplo c:\teste   ou c:\arquivos de programas\......

ou seja ele indicar qual a pasta e o caminho

 

Link to comment
Share on other sites

 

amigo aFindFile procura o arquivo em todo disco c: e suas pastas

dai se vc quiser o retorno somente da pasta, poderia fazer assim:


function ProcuraArquivo(cFile)
   local n 
   local aFiles := aFindFile( cFile, "c:" )
   dalfault cFile := "sac.ini"
      
   for n := 1 to Len( aFiles )
      MsgInfo( aFiles[ n ] )
      MsgInfo( Left(aFiles[ n ]), Len(aFiles[ n ])-Len(cFile)) ) // aqui retorna o path
   next

return nil
testai pois nao fiz isso

 

Amigo, fiz assim 
 

function ProcuraArquivo(cFile)
   local n 
   local aFiles := aFindFile( cFile, "c:" )
   &&dalfault cFile := "sac.ini"
   ? cFile
	? Valtype(aFiles)
	   

   for n := 1 to Len( aFiles )
      MsgInfo( aFiles[ n ] )
*      MsgInfo( (Left(aFiles[ n ])), (Len(aFiles[ n ])-Len(cFile))  )  // aqui retorna o path
   next

	xbrowse(aFiles)

return nil

Porem ele retorna vazio, porem estou passando o parametro  ProcuraArquivo('ValidadorSintegra2017.exe')

 

Agradeço aos amigos


 

Link to comment
Share on other sites

Amigos, o gilmer me deu uma luz.

Assim funciona, porem demora muito se o HD estiver com muita coisa instalada

function ProcuraArquivo()
 
   local aFiles := aFindFile( "ValidadorSintegra2017.exe", "c:" )
   local n

   for n := 1 to Len( aFiles )
      MsgInfo( aFiles[ n ] )
   next
return nil
//---------------------------------------------------------------------------//
function aFindFile( cFileName, cPath, aResult )

   local aFiles := Directory( cPath + "\", "D" )
   local n
   Logfile("log.txt",{"FileName=",cFileName})

   //If cPath=="c:"
   //   xBrowse(aFiles)
   //Endif

   if ProcName( 5 ) == "AFINDFILE"
      return nil
   endif

   if aResult == nil
      aResult = {}
   endif
   //? cPath
   logfile("log.txt",{"Path:",cPath})
   //xBrowse(aFiles)
   for n = 1 to Len( aFiles )
      SysRefresh()
      logfile("log.txt",{Upper( aFiles[ n ][ 1 ] ) == Upper( cFileName ),Upper( aFiles[ n ][ 1 ] )+"="+Upper( cFileName )})
      if Upper( aFiles[ n ][ 1 ] ) == Upper( cFileName )
         AAdd( aResult, cPath + "\" + cFileName )
      endif
      if "D" $ aFiles[ n ][ 5 ]  .and. ! ( aFiles[ n ][ 1 ] $ ".." )
         aFindFile( cFileName, cPath + "\" + aFiles[ n ][ 1 ], aResult )
      endif
   next

return aResult

Obrigado a todos

Link to comment
Share on other sites

 

Tenta assim

Hb_DirScan("C:\Program Files (x86)","ValidadorSintegra2017.exe","H")

ou

Hb_DirScan("C:\Program Files","ValidadorSintegra2017.exe","H")

Ok, amigo eu exemplifiquei o sintegra, mas poderia ser algum outro que não sei em que pasta seria instalado.

 

 

Link to comment
Share on other sites

 

Amigos, o gilmer me deu uma luz.

Assim funciona, porem demora muito se o HD estiver com muita coisa instalada


function ProcuraArquivo()
 
   local aFiles := aFindFile( "ValidadorSintegra2017.exe", "c:" )
   local n

   for n := 1 to Len( aFiles )
      MsgInfo( aFiles[ n ] )
   next
return nil
//---------------------------------------------------------------------------//
function aFindFile( cFileName, cPath, aResult )

   local aFiles := Directory( cPath + "\", "D" )
   local n
   Logfile("log.txt",{"FileName=",cFileName})

   //If cPath=="c:"
   //   xBrowse(aFiles)
   //Endif

   if ProcName( 5 ) == "AFINDFILE"
      return nil
   endif

   if aResult == nil
      aResult = {}
   endif
   //? cPath
   logfile("log.txt",{"Path:",cPath})
   //xBrowse(aFiles)
   for n = 1 to Len( aFiles )
      SysRefresh()
      logfile("log.txt",{Upper( aFiles[ n ][ 1 ] ) == Upper( cFileName ),Upper( aFiles[ n ][ 1 ] )+"="+Upper( cFileName )})
      if Upper( aFiles[ n ][ 1 ] ) == Upper( cFileName )
         AAdd( aResult, cPath + "\" + cFileName )
      endif
      if "D" $ aFiles[ n ][ 5 ]  .and. ! ( aFiles[ n ][ 1 ] $ ".." )
         aFindFile( cFileName, cPath + "\" + aFiles[ n ][ 1 ], aResult )
      endif
   next

return aResult

Obrigado a todos

Não esquece de tirar os logfile, isto deixara muito mais lento.

 

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...