Vbfilefind : recherche de fichiers pour remplacer celle de windows

Soyez le premier à donner votre avis sur cette source.

Vue 6 890 fois - Téléchargée 638 fois

Description

Occasionnellement, il arrive qu'on ait besoin de chercher des fichiers sur son disque dur. Il serait absurde de diviser la puissance utile de sa machine par deux juste pour pouvoir utiliser un moteur de recherche local, simplement par négligence à bien ranger ses fichiers ! Mais lorsque malgré tout on a vraiment besoin d'une recherche efficace, rien n'est plus énervant qu'un logiciel qui passe son temps à chercher à l'intérieur des milliers de fichiers zip sur votre disque dur. Qui plus est, lorsque ledit logiciel trouve un fichier dans un dossier, mais qu'il ne le trouve plus lorsqu'on remonte dans le dossier parent (en y incluant bien tous les sous-dossiers) la conclusion est implacable : le système de recherche de Windows XP est quasi-inutile. Celui de Vista a été amélioré avec la possibilité d'exclure la recherche dans les zip, mais là pour le coup, on ne peut pas appeler une amélioration la division par deux des performances générales du système par rapport à XP (je n'ai pas eu l'occasion de tester suffisamment Windows 7). Et comme j'imagine que corriger les bugs de XP est vraiment le dernier des soucis de Microsoft (XP est sur le point d'être placardisé une fois pour toute), alors voici un logiciel pour remplacer le système de recherche de XP. Je suis parti d'une excellente source en C# sur CodeProject. J'y ai notamment ajouté la gestion de l'argument en ligne de commande, ce qui permet de l'appeler depuis l'explorateur de fichier, comme la recherche intégrée de fichiers de XP. J'ai aussi ajouté la prise en compte des recherches insensibles à la casse, en combinant les recherches avec le type d'encodage :

Fonctionnalités :
- Recherche sensible ou insensible à la casse (minuscules/majuscules) ;
- Recherche sur un octet (ASCII/ANSI) ou deux octets (Unicode), ou les deux à la fois ;
- Recherche avec ou sans les sous-dossiers ;
- Recherche par dates min./max. ;
- Mémorisation des options de recherche ;
- Signalement des erreurs (ex.: fichier inaccessible car utilisé par un autre logiciel) ;
- Ouverture des fichiers trouvés dans le bloc-notes, avec recherche automatique de la 1ère occurrence ;
- Recherche via l'explorateur de fichiers, avec le bouton droit sur un dossier sélectionné.

Source / Exemple :


Cf. Zip.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

DX90
Messages postés
40
Date d'inscription
dimanche 24 janvier 2010
Statut
Membre
Dernière intervention
14 septembre 2018
1 -
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
1222
Date d'inscription
jeudi 23 août 2001
Statut
Membre
Dernière intervention
9 septembre 2018
-
Version 1.08 : Iconisation : ignorer taille des colonnes
cs_Patrice99
Messages postés
1222
Date d'inscription
jeudi 23 août 2001
Statut
Membre
Dernière intervention
9 septembre 2018
-
Version 1.07 : Sauvegarde de la taille des colonnes, notamment.
Whismeril
Messages postés
13828
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 octobre 2019
309 > cs_Patrice99
Messages postés
1222
Date d'inscription
jeudi 23 août 2001
Statut
Membre
Dernière intervention
9 septembre 2018
-
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
1222
Date d'inscription
jeudi 23 août 2001
Statut
Membre
Dernière intervention
9 septembre 2018
> Whismeril
Messages postés
13828
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 octobre 2019
-
Oui, pas mal, je vais peut être inclure ça dans une prochaine version, merci.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.