IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

rechercher n'importe quelle chaine dans nom de fichier


Sujet :

VBScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 4
    Par défaut rechercher n'importe quelle chaine dans nom de fichier
    Salut,

    Alors voilà mon petit soucis. Je voudrais pouvoir chercher un fichier sous la forme: mon_fichier_********.txt. Les étoiles doivent pouvoir être remplacées par n'importe quel caractère et la taille de la chaine peut être variable.

    En fait il s'agit des wildcard sous linux/unix ...

    Quelqu'un a une idée?

    Merci d'avance!

  2. #2
    Membre expérimenté
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2011
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2011
    Messages : 163
    Par défaut
    Salut !
    Voici pour t'aider :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Dim FileExt, FileStart, Folder, LongName, System
     
    FileExt = LCase("txt") 'Extension recherchée
    FileStart = LCase("mon_fichier_") 'Début du nom des fichiers recherchés
    Folder = "C:\temp\" 'Répertoire de recherche
     
    LongName = Len(FileStart) 'Longueur du champ de recherche
     
    Set System = CreateObject("Scripting.FileSystemObject")
    For Each File In System.GetFolder(Folder).Files 'On parcourt les fichiers du répertoire
     
    	'Si les 3 derniers caractères correspondent à l'extension et si le début du nom du fichier correspond ...
            If Right(LCase(File.Name), 3) = FileExt And Left(LCase(File.Name), LongName) = FileStart Then
    	MsgBox(File.Name) 'On affiche le nom du fichier
            End If
    Next

  3. #3
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 841
    Par défaut

    Bon voici une autre idée en utilisant les expressions régulières Regex
    Donc à tester ce code chez vous et dis-moi ce qu'il donne comme résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Const ForReading = 1
    Const ForWriting = 2
    Titre = "Rechercher dans les noms des fichiers"
    Set ws = CreateObject("wscript.shell")
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Cmd = "cmd /c Color 90 & Title Veuillez Patienter La Recherche est en cours ........ & Dir c:\*.txt /s /b > c:\rechFichTxt.txt"
    Execution = ws.run(Cmd,1,True)
    Set f = FSO.OpenTextFile("c:\rechFichTxt.txt",ForReading)
    Set objFiles = FSO.OpenTextFile("c:\AffineRecherche.txt",ForWriting,True)
    sResults = f.ReadAll
    Set objRegex = new RegExp
    objRegex.Pattern = "(.w*)*\mon_fichier_(.w*)*\.txt"
    objRegex.Global = True
    objRegex.IgnoreCase = True
    Set Matches = objRegex.Execute(sResults)
    For Each Match in Matches   
        objFiles.Writeline Match.value
    Next
    MsgBox " La Recherche est terminé !",64,Titre
    ws.Run "c:\AffineRecherche.txt",1,False

  4. #4
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 841
    Par défaut

    Voici un autre script mais plus généralisé et interactif
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Const ForReading = 1
    Const ForWriting = 2
    Titre = "Rechercher dans les noms des fichiers"
    Ext = InputBox("Saisissez l'extension du fichier à rechercher Exemple ""vbs"" ou bien ""txt"" ou bien ""xls"" sans les guillemets",Titre,"txt")
    If Ext = "" Then wscript.Quit
    DebutMot = InputBox("Saisissez la chaîne de caractères qui débute avec le nom du fichier à rechercher :",Titre,"mon_fichier_")
    If DebutMot = "" Then wscript.Quit
    Set ws = CreateObject("wscript.shell")
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Cmd = "cmd /c mode con cols=100 lines=2 & Color 90 & Title Veuillez Patientez... La Recherche du Mot """&DebutMot&""" dans les noms des fichiers de Type """&Ext&""" est en cours .............. & Dir c:\*."& Ext &" /s /b > c:\RechFich.txt"
    Execution = ws.run(Cmd,1,True)
    Set f = FSO.OpenTextFile("c:\RechFich.txt",ForReading)
    sResults = sResults & f.ReadALL
    sResults = Replace(sResults,"‚","é") 'Correction de l'ouput
    Set fCorrection = FSO.OpenTextFile("c:\RechFich.txt",ForWriting,True)
    fCorrection.Writeline sResults
    fCorrection.close
    Set objFiles = FSO.OpenTextFile("c:\FiltrerRechFich.txt",ForWriting,True)
    Set objRegex = new RegExp
    objRegex.Pattern = "(.w*)*"& DebutMot &"(.w*)*\."& Ext
    objRegex.Global = True
    objRegex.IgnoreCase = True
    Set Matches = objRegex.Execute(sResults)
    For Each Match in Matches   
        objFiles.Writeline Match.value
    Next
    MsgBox "La Recherche du Mot """&DebutMot&""" dans les noms des fichiers de Type """&Ext&""" est Terminé !",64,Titre
    ws.Run "c:\FiltrerRechFich.txt",1,False

  5. #5
    Membre expérimenté
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2011
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2011
    Messages : 163
    Par défaut
    Merci pour ce script Hackhoofr !
    En fait il fait plus qu'une recherche des fichiers "commençant par", il recherche les fichiers "dont le nom contient" ...

  6. #6
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 127
    Par défaut
    Salut

    Je ne connais pratiquement rien en expressions régulières Regex , mais je pense que tu peux essayer ce
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objRegex.Pattern = DebutMot &"(.w*)*\."& Ext
    ligne 20
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  7. #7
    Membre expérimenté
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2011
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2011
    Messages : 163
    Par défaut
    Merci ProgElecT, mais ce n'était pas une question !

    En fait j'ai testé le script de HackHoofr et il trouve aussi bien des fichiers "recherche***.ext" que "***recherche***.ext" que "***recherche.ext"

    C'était une constatation et je trouve cela trés pratique !
    Merci quand même ! ++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Placer n'importe quelles données dans une "cellule"
    Par Anduriel dans le forum MATLAB
    Réponses: 7
    Dernier message: 25/08/2011, 14h45
  2. Rechercher sous-chaine dans nom fichier
    Par leuke dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 17/06/2009, 17h11
  3. % pour dire n'import quelle chaine de caractère
    Par emi dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 11/07/2007, 09h31
  4. rechercher et extraire deux chaines dans un fichier
    Par piotr dans le forum Langage
    Réponses: 16
    Dernier message: 13/07/2006, 15h07
  5. Réponses: 2
    Dernier message: 19/10/2005, 15h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo