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
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 4
    Points : 3
    Points
    3
    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 averti
    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
    Points : 304
    Points
    304
    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 éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    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 éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    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 averti
    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
    Points : 304
    Points
    304
    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
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 172
    Points
    17 172
    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
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  7. #7
    Membre averti
    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
    Points : 304
    Points
    304
    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