VBFILEFIND : RECHERCHE DE FICHIERS POUR REMPLACER CELLE DE WINDOWS

cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 - 21 nov. 2010 à 11:58
DX90 Messages postés 40 Date d'inscription dimanche 24 janvier 2010 Statut Membre Dernière intervention 14 septembre 2018 - 14 sept. 2018 à 02:58
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/52496-vbfilefind-recherche-de-fichiers-pour-remplacer-celle-de-windows

DX90 Messages postés 40 Date d'inscription dimanche 24 janvier 2010 Statut Membre Dernière intervention 14 septembre 2018 1
14 sept. 2018 à 02:58
Salut

J'utilise ton logiciel depuis 2010 (V1.01) et c'est toujours un bonheur de s'en servir, je suis venu récupérer ta dernière release.
Ce qui serait pas mal ça serait quelque checkbox des extensions à inclure ou exclure. Je sais presque toujours dans quel fichier cherché mais dans le cas où je l'ignore, que dois-je entrer ? *.exe, *.img, *.iso ?
Car j'ai essayé cela dans exclure et en fait ça ne m'a sorti que des résultats avec ce que je ne voulais pas ...

Merci bien,
Cdlt
DX90
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
1 avril 2017 à 09:14
Version 1.08 : Iconisation : ignorer taille des colonnes
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
1 avril 2017 à 09:12
Oui, pas mal, je vais peut être inclure ça dans une prochaine version, merci.
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
Modifié par Whismeril le 19/03/2017 à 19:57
Bonjour,
pour la recherche sur les noms de fichiers, il y a peut être plus simple en combinant un directory.getFies, qui prend en paramètre un pattern utilisant les joker * et ? et une requête Linq pour les fichiers exclus.

Un exemple vite fait
Edit exemple amélioré
Dim exclusions() As String = { "pas ca", "niCeluilà" }
Dim ouChercher As String = "C:\Temp"
Dim pattern As String = "*a*.txt"

Dim resultats() As String = (
    From f In Directory.GetFiles(ouChercher, pattern)
    Where (Not exclusions.Any(Function(ex) ExclureFichier(ex,f)))
    Select f).ToArray()


''' <summary>
''' Methode qui supprime les accents et autres signes diacritiques, source http://www.developpez.net/forums/d286030/dotnet/langages/csharp/supprimer-accents-lettre/
''' </summary>
''' <param name="stIn"></param>
''' <returns></returns>
Private Function RemoveDiacritics(ByVal stIn As String) As String
	Dim stFormD As String = stIn.Normalize(NormalizationForm.FormD)
	Dim sb As New StringBuilder()

	For ich As Integer = 0 To stFormD.Length - 1
		Dim uc As UnicodeCategory = CharUnicodeInfo.GetUnicodeCategory(stFormD.Chars(ich))
		If uc <> UnicodeCategory.NonSpacingMark Then
			sb.Append(stFormD.Chars(ich))
		End If
	Next ich

	Return (sb.ToString().Normalize(NormalizationForm.FormC))
End Function

Private Function ExclureFichier(ByVal Critere As String, ByVal Fichier As String, Optional ByVal SensibleCasse As Boolean = False, Optional ByVal SensibleDiacritique As Boolean = False) As Boolean
	If Not SensibleCasse Then
		'on passe tout en minuscule, comme ça tout le monde à la même casse
		Critere = Critere.ToLower()
		Fichier = Fichier.ToLower()
	End If

	If Not SensibleDiacritique Then
		'on enlève tous les signes diacritiquess (accents, cédilles etc..)
		Critere = RemoveDiacritics(Critere)
		Fichier = RemoveDiacritics(Fichier)
	End If

	Return System.IO.Path.GetFileNameWithoutExtension(Fichier).Contains(Critere)

End Function


cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
19 mars 2017 à 10:12
Version 1.07 : Sauvegarde de la taille des colonnes, notamment.
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
6 juil. 2014 à 09:51
Version 1.03 : Tri des résultats, passage en VB 2010 - DotNet 4.0.
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
27 nov. 2010 à 09:54
Précision : les caractères Unicodes peuvent être sur 2 ou 1 octet : dans ce dernier cas, ils seront trouvés via l'option ASCII au lieu d'Unicode (ou sinon via l'option de recherche avec double encodage). Si vous avez un texte qui contient par exemple des caractères grecs, il faut choisir l'option Unicode, sinon ils seront transformés en signe ?
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
22 nov. 2010 à 13:59
Merci. Je précise à tous que la recherche sur le nom du fichier doit être explicitée (par exemple Fichier*.* ou bien Fichier?.doc) alors que dans la recherche de Windows on n'est pas obligé de préciser l'extension (mais on n'est pas obligé non plus de trouver ce que l'on cherche :-).
Sechaud Messages postés 288 Date d'inscription jeudi 28 octobre 2004 Statut Membre Dernière intervention 3 janvier 2017
22 nov. 2010 à 13:32
Alors, mes remarques à propos du dysfonctionement en utilisant
la partie Restrictions ne sont pas valables et je prie Fabrice de m'en excuser.
En effet, je n'avais pas compris que son programme permet de retrouver un mot A L'INTÉRIEUR d'un fichier et non dans le nom du fichier comme je pensais. Du coup c'est un outil formidable et b la vitesse à laquelle il cherche DANS les fichiers est incroyable. Ça vaut largement 10.
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
22 nov. 2010 à 10:36
Merci. En ce qui concerne la simplification du code avec une procédure asynchrone et le rafraîchissement de l'interface, la prochaine plateforme DotNet va considérablement simplifier la programmation, voir un excellent article ici :
www.codeproject.com/KB/cs/async.aspx
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
21 nov. 2010 à 18:48
en tout cas chapeau bas mr ! un trés bon exemple à suivre ;)
Sechaud Messages postés 288 Date d'inscription jeudi 28 octobre 2004 Statut Membre Dernière intervention 3 janvier 2017
21 nov. 2010 à 17:21
J'avais essayé ta méthode, j'ai essayé à nouveau, avec diverses combinaisosns mais c'est pareil, impossible de rechercher une partie de mot
Je viens de tenter ma chance sous Vista, pareil, impossible.
Pour la déprotection de System Volume Information, il est vrai que pour ceux qui utilisent le Système de restauration de Windows, ce n'est pas un truc à laisser en l'état.
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
21 nov. 2010 à 14:30
Pour la recherche d'une partie de mot, tu as essayé avec Casse décoché et les 2 types d'encodage, avec *.* et avec les sous-dossiers ? VBFindFile ne distingue pas les mots des parties de mot, cela devrait fonctionner normalement.
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
21 nov. 2010 à 14:25
Ok, merci pour l'info. Par contre, faut espérer que tout le monde ne peut pas aller farfouiller ensuite dans ce dossier System, surtout s'il contient une copie des fichiers sensibles...
Sechaud Messages postés 288 Date d'inscription jeudi 28 octobre 2004 Statut Membre Dernière intervention 3 janvier 2017
21 nov. 2010 à 14:06
Patrice, chez moi sous XP Pro, la partie du haut marche super bien si on met le nom exact du fichier ou si on utilise le jocker "*".
Par contre, quand j'ai voulu utiliser la parie Restriction, j'ai eu droit au message => System Volume Information inaccessible sur votre machine.
Comme j'ai dévalidé les Restaurations je ne m'occupais jamais du dossier bloqué.
Ceux qui ont le même message peuvent employer cette méthode trouvée sur le Net pour rendre accessible le Dossier:
CLIC DROIT sur C:\System Volume Information
-Propriétés /Partage
-Cocher la case "Partager ce dossier sur le réseau"
-Cliquer Appliquer (A faire 2 fois)
-Ok
-Le dossier est maintenant disponible !

Après c'est bon, mais ton programme ne permet pas de chercher
avec une partie de mot seulement, ou alors je n'ai pas trouvé comment et c'est dommage car le chercheur d'XP le fait très bien.
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
21 nov. 2010 à 12:55
Non c'est moi qui me suis trompé, je voulais décomposer en h/mn/sec/msec mais en fait j'ai simplement affiché le total de chaque ! Il faut utiliser un format d'affichage, merci pour la remarque (je corrigerai plus tard, le résultat n'est pas faux, il est juste non intuitif).
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
21 nov. 2010 à 11:58
Fonctionne très bien ! Le truc qui me chiffonne c'est que le nombre de millisecondes est > 1000, donc j'ai l'impression que chez MS ils ont oublié de faire mMilliseconds -= mSeconds*1000
Rejoignez-nous