marcioe Posted November 13, 2019 Report Share Posted November 13, 2019 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 Quote Link to comment Share on other sites More sharing options...
marcioe Posted November 18, 2019 Author Report Share Posted November 18, 2019 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 Quote Link to comment Share on other sites More sharing options...
marcioe Posted November 18, 2019 Author Report Share Posted November 18, 2019 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 Quote Link to comment Share on other sites More sharing options...
giovanyvecchi Posted November 18, 2019 Report Share Posted November 18, 2019 Tenta assim Hb_DirScan("C:\Program Files (x86)","ValidadorSintegra2017.exe","H") ou Hb_DirScan("C:\Program Files","ValidadorSintegra2017.exe","H") Quote Link to comment Share on other sites More sharing options...
marcioe Posted November 18, 2019 Author Report Share Posted November 18, 2019 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. Quote Link to comment Share on other sites More sharing options...
giovanyvecchi Posted November 18, 2019 Report Share Posted November 18, 2019 Ai seria assim Hb_DirScan("C:\","QualquerProgramaOuArquivo.ext") Quote Link to comment Share on other sites More sharing options...
gilmer Posted November 19, 2019 Report Share Posted November 19, 2019 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. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.