Página 1 de 3
Como achar um arquivo no computador
Enviado: 02 Jan 2015 16:08
por helio
Pessoal,
Tem como procurar um arquivos em todas as pasta do computador como no antigo DOS exemplo: dir arquivo.txt /s
Como achar um arquivo no computador
Enviado: 02 Jan 2015 19:09
por Jairo Maia
Olá Hélio,
Claro! No XP basta usar a opção Pesquisar no botão INICIAR e configurar a pesquisa como desejar. No Seven basta clicar no botão INICIAR e digitar o que deseja procurar na caixa Pesquisar programas e arquivos
Como achar um arquivo no computador
Enviado: 02 Jan 2015 21:13
por JoséQuintas
Se for o que parece, seria mais rápido e prático ter digitado o comando e saber que funciona do mesmo jeito.
Se for alternativa pra isso, no XP já foi feita.
E se for no WIndows 7, é só digitar lá encima à direita, quando abrir uma pasta.
Pessoalmente continuo preferindo o comando no prompt, é muito mais rápido.
E dependendo, melhor acrescentar mais parâmetros:
dir /s /b /p
/s - subdiretórios recursivamente
/b - mostra path + nome do arquivo, facilita enxergar localização
/p - com pausa, caso tenham muitos arquivos
Como achar um arquivo no computador
Enviado: 02 Jan 2015 23:39
por alxsts
Olá!
Penso que o colega não esteja com esta dúvida tão básica... creio que o que ele pretende é fazer isto programaticamente, via Harbour.
Como achar um arquivo no computador
Enviado: 03 Jan 2015 20:31
por Eolo
arq:=DirectoryRecurse()
É similar a Directory(), só que considera sub-pastas.
A saída (ARQ) é uma matriz de "n" linhas (quantos forem os arquivos encontrados) e 5 colunas (nome, tamanho, data, hora e atributo). Se não for encontrado nenhum arquivo, ARQ será uma matriz vazia.
NOME contém o nome e o caminho do arquivo: "c:\pasta\pasta1\arq1.prg"
Exemplos:
arq := DirectoryRecurse("*.*")
Retorna todos os arquivos da pasta atual, incluindo os arquivos de subpastas existentes.
arq := DirectoryRecurse("*.prg")
Igual acima, mas só os arquivos de extensão PRG.
arq := DirectoryRecurse("c:\pasta1\pasta2\pr*.*")
Retorna todos os arquivos iniciados com "pr" da pasta "c:\pasta1\pasta2", incluindo os arquivos de subpastas existentes (sob pasta2).
Como achar um arquivo no computador
Enviado: 04 Jan 2015 16:26
por Pablo César
Obrigado Eolo, eu não conhecia essa função DirectoryRecurse(). Ela vem do xHarbour. Eu testei e ficou extremamente pesada. E em alguma vezes falou.
Como achar um arquivo no computador
Enviado: 04 Jan 2015 18:43
por Eolo
Eu testei e ficou extremamente pesada. E em alguma vezes falou.
Acho que sua observação ficou vaga e não dá pra concluir se vc acha que a função deve ser usada ou não.
Vc poderia postar como fez o teste (que demonstra a lentidão) e esclarecer no que a função falhou?
Como achar um arquivo no computador
Enviado: 04 Jan 2015 22:09
por Pablo César
O meu comentário coincide com muitos outros feitos em outros fóruns que pesquisei na internet.
A conclusão de ser usada ou não vai de cada um, se quer adotar ou não.
Eu não estou te criticando por ter indicado algo (até agradeci por ter compartilhado), apenas relatando o que eu achei dessa "nova" função (nova pra mim). Então tomar uma decisão por causa do meu comentário, pode ser relativo.
O teste que eu fiz foi este:
Código: Selecionar todos
#include <hmg.ch>
Function Main()
Local aFiles:=DirectoryRecurse( "C:\Fontes\HMG\*.prg" )
MsgDebug(aFiles)
// MsgList(aFiles)
Return Nil
Talvez seja pela enorme quantidade de arquivos.
Pode ser que a função tenha alguma limitação, porque após vários segundos de execução (monitorado pelo gerenciador de tarefas do SO), não veio valor algum.
Também testei com este código:
aFiles:=DirectoryRecurse( "C:\windows\*" ) e levou mais de 4 minutos para exibir na tela, mas cansei e ainda está rodando...
Adicionei o executável.
Como achar um arquivo no computador
Enviado: 04 Jan 2015 23:18
por JoséQuintas
Fiz um teste aqui.
O resultado, ao fazer duas vezes em seguida é interessante.
mais de 3 minutos na primeira vez, e 5 segundos na segunda vez, pra 241.383 arquivos de resultado.
D:\>test
23:13:15
241383
23:16:51
D:\>test
23:16:55
241383
23:17:00
o fonte foi este:
Código: Selecionar todos
PROCEDURE Main
? time()
aDir := DirectoryRecurse( "d:\inetpub\wwwroot\xmlpdf\*.xml" )
? Len( aDir )
? time()
RETURN
Como achar um arquivo no computador
Enviado: 04 Jan 2015 23:46
por Itamar M. Lins Jr.
Ola!
No xHb tem bug. No Harbour teve mudanças, mas pela data talvez no xHb já corrigiram tbm.
2008-07-25 15:24 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/contrib/xhb/Makefile
* harbour/contrib/xhb/common.mak
+ harbour/contrib/xhb/dirrec.prg
+ added DirectoryRecurse() function. It's not exactly xHarbour
compatible as I wanted at the beginning. But when I begin
to carefully check what xHarbour exactly does then I dropped
the strict compatibility due to problems with xHarbour
implementation which have to be fixed. I left this note in the
dirrec.prg header:
This implementation uses different rules then xHarbour one.
It does not change current drive or current directory so
unlike the xHarbour version it's MT safe.
It also returns relative paths which are more similar to
DIRECTORY() function results so they can be easy used
directly in other code, f.e. to create archive without
absolute paths. Please note that user can easy convert
relative paths to absolte ones by simple adding curdir()
and/or cPath parameter passed to DirectoryRecurse() but
reverted conversion may not be possible in some cases.
The 3-rd xHarbour parameter <lCaseMach> is ignored because
harbour uses platform native rules to check filename mask
respecting SET FILECASE and SET DIRCASE settings.
xHarbour does not add "D" to attribute list used for directory
tree scanning so user always have to add it manually and later
it ignores it so it's not possible to extract file list with
directories entries. In Harbour it's fixed.
Saudações,
Itamar M. Lins Jr.
Como achar um arquivo no computador
Enviado: 05 Jan 2015 10:26
por helio
Bom dia,
Pessoal o que estava querendo dizer e no modo de programacao XHARBOUR e vi alguns exemplos mais gostaria de saber era o seguinte uma pessoa baixa um arquivo de um email ai gostaria de pesquisa em todo o HD para pegar este arquivo sem saber onde foi baixado tem como ?
Como achar um arquivo no computador
Enviado: 05 Jan 2015 13:22
por Kapiaba
Olá, veja o comando:
É muito mais rápido que o Anterior.
abs.
Como achar um arquivo no computador
Enviado: 05 Jan 2015 14:11
por Jairo Maia
Olá Pessoal,
Creio que para procurar um arquivo em toda a unidade não há mesmo uma forma rápida de faze-lo. Penso também que a melhor e mais rápida forma seria usar a sugestão do José, e direcionando o resultado para um arquivo. Exemplo (xHarbour):
Depois trazer à memória o arquivo Result.Tmp e verificar se o arquivo foi encontrado, e se sim tratar a ação. Mesmo assim, pode ser encontrado mais de um arquivo com mesmo nome.
Kapiaba, Creio que essa função não atende a necessidade do autor do tópico, porque não tem como varrer o disco todo. Outrossim, como funciona essas funções? Você tem algum exemplo prático? Veja a sintaxe aqui:
https://vivaclipper.wordpress.com/tag/curdrive/
Eu particularmente nunca entendi como usar nenhuma delas. Sempre retorna resultados estranhos...
Como achar um arquivo no computador
Enviado: 05 Jan 2015 15:06
por Kapiaba
Boa tarde Jairo, veja se ajuda, aqui funciona perfeito.
Código: Selecionar todos
#include "FiveWin.ch" // basta comentar para modo console
FUNCTION Main()
LOCAL cArq, cExt, cPath, cFile, cEncontrou, nI
cArq := ""
cExt := ""
cPath := ""
cPath := "C:\FWH1306\SAMPLES\"
cFile := "TESTE.PRG"
// aFile := DIRECTORYRECURSE( cPath + cFile )
// ou:
aFile := DIRECTORY( cPath + cFile )
If Len(aFile)==0
? "Arquivo Não Encontrado"
Else
For nI := 1 to Len( aFile )
hb_FNameSplit( aFile[nI,1], @cPath, @cArq, @cExt )
? cPath+" "+cArq+" "+cExt+" Perfeito, encontrou!"
Next
aFiles := ALLTRIM( cPath+cArq+cExt )
cEncontrou := aFiles
IF FILE( cEncontrou ) // Encontrou, mostra...
? cEncontrou
ENDIF
EndIf
RETURN NIL
Abs.
Como achar um arquivo no computador
Enviado: 05 Jan 2015 16:00
por Eolo
Pessoal o que estava querendo dizer e no modo de programacao XHARBOUR e vi alguns exemplos mais gostaria de saber era o seguinte uma pessoa baixa um arquivo de um email ai gostaria de pesquisa em todo o HD para pegar este arquivo sem saber onde foi baixado tem como ?
Bão, vou ser, de novo, o "chato".
Está-se discutindo performance desta e daquela função, dentro de um SISTEMA, mas vou parar pra questionar a UTILIDADE da solução do problema, programaticamente.
"O usuário baixa um arquivo do e-mail, não sabe onde salvou e depois o SISTEMA da empresa tem que procurar o arquivo?". Hã? Como assim?
Algo como "O filho do usuário quer saber onde o Governor of Poler 2 salva os arquivos, aí o cliente acessa o sistema da empresa e acha os arquivos?". Hã?
A pergunta inicial do Helio até poderia ter algum sentido, tanto que respondi. Mas depois deste último post dele, sei não. Imagino o financeiro, debruçado sobre o Contas a Pagar, tendo que parar porque o presidente da empresa quer saber onde o Gamão do Windows 7 salvou os scores dele...
Pra mim não faz sentido.