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 :

Récupération du nom évolutif d’un répertoire (VBS)


Sujet :

VBScript

  1. #1
    Membre du Club
    Homme Profil pro
    Technicien
    Inscrit en
    Février 2016
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Février 2016
    Messages : 63
    Points : 43
    Points
    43
    Par défaut Récupération du nom évolutif d’un répertoire (VBS)
    Bonjour à tous,

    Je souhaiterais, en VBS, récupérer le nom d’un répertoire de la forme « C:\Machin\Truc\Exemple* » où le joker est une variable. Ce répertoire est unique mais son nom évolue.
    L’équivalent en VBA serait MonRepertoire = Dir (« C:\Machin\Truc\Exemple* », vbDirectory).

    Merci

  2. #2
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 082
    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 082
    Points : 16 862
    Points
    16 862
    Par défaut
    Salut

    En VBS, avec FileSystemObject il n'y a pas possibilité de filtrer les noms de dossiers.
    Par contre tu peux utiliser ta commande DOS.
    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
    Dim Commande, MsG, RecupLg, RecupCl, T, WshShell, oFso, f
    Const ForReading = 1
     
    Set WshShell = CreateObject("WScript.Shell")
    Commande = " /c Dir c:\p* > c:\Frecup.txt" ' /c Exécute la commande donnée par la chaîne de caractères puis se termine.
    WshShell.Run "cmd.exe" & Commande, vbHide
    Set WshShell = NotHing
    WScript.Sleep 100
     
    Set oFso = CreateObject("Scripting.FileSystemObject")
    Set f = oFso.OpenTextFile("c:\Frecup.txt", ForReading)
    MsG = f.ReadAll
    f.Close
    oFso.DeleteFile "c:\Frecup.txt",True  ' Le paramétre "Force" à true permet d'effacer les fichiers en lectures seules.
    Set oFso = NotHing
     
    RecupLg = Split(MsG, vbCrLf)
    MsG = ""
    For T = 0 To UBound(RecupLg) - 1
    	RecupCl = Split(RecupLg(T), "<REP>", -1, vbTextCompare)
    	If UBound(RecupCl) >= 1 Then MsG = MsG & vbCrLf & Trim(RecupCl(1))
    Next
    If MsG <> "" Then
        MsgBox MsG, vbInformation, "Ok"
        Else
        MsgBox "Pas de repertoire de trouvé", vbCritical, "Ko"
    End If
    Dans l'exemple, la variable MsG contient tous les répertoires commençant par P
    pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre du Club
    Homme Profil pro
    Technicien
    Inscrit en
    Février 2016
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Février 2016
    Messages : 63
    Points : 43
    Points
    43
    Par défaut
    Bonjour,
    C'est très bien même si c'est plus long que "MonRepertoire = Dir (« C:\Machin\Truc\Exemple* », vbDirectory)" !!!
    Bonne journée

  4. #4
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    Peut-être aussi une solution(quoique marqué résolu) qui ne nécessite pas de passage par des fichiers et par la commande DOS et qui offre la possibilité d'ouvrir le dossier cherché :
    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
    Option Explicit 
     
    Const DossierOrigine = "C:\Machin\Truc\", DebutNom = "Exemple" 
    Dim fso,  oFold, oSubFolder, Found, DossierTrouve
    Found = False
    Set fso = CreateObject("Scripting.FileSystemObject") 
    Set oFold = fso.GetFolder(DossierOrigine)
    For Each oSubFolder In oFold.SubFolders
        If LCase(Mid(oSubFolder.Name, 1, Len(DebutNom))) = LCase(DebutNom) Then
           MsgBox "Un dossier portant le nom : " & oSubFolder.Name & " a été trouvé."
           Found = True ' indicateur à utiliser si on veut ouvrir le dossier
           DossierTrouve = oSubFolder.Name
           Exit For ' inopérant si le dossier est unique
        End If
    Next
    ' Si on veut ouvrir le dossier recherché, on peut faire :
    If Found Then
        Dim WS
        Set WS = CreateObject("Wscript.Shell") 
        WS.Run "Explorer.exe " & DossierOrigine & DossierTrouve, 1, False
    Else
           MsgBox "Aucun dossier correspondant à la demande !"
     
    End If
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  5. #5
    Membre du Club
    Homme Profil pro
    Technicien
    Inscrit en
    Février 2016
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Février 2016
    Messages : 63
    Points : 43
    Points
    43
    Par défaut
    Bonjour,
    Oui, cette solution me parait plus élégante et mieux adaptée à mes besoins.
    Merci à vous 2...

  6. #6
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    Citation Envoyé par MrBiduleX Voir le message
    Bonjour,
    Oui, cette solution me parait plus élégante et mieux adaptée à mes besoins.
    Merci à vous 2...
    Sans pour autant dévaloriser celle de ProgElecT que je salue au passage.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

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

Discussions similaires

  1. Récupération du noms des fichiers dans un répertoire
    Par tulipelover dans le forum Shell et commandes GNU
    Réponses: 12
    Dernier message: 03/08/2008, 21h47
  2. VBA Récupération du nom de répertoire
    Par THEKIT dans le forum VBA Access
    Réponses: 2
    Dernier message: 08/05/2008, 09h21
  3. Récupération du nom d'un répertoire
    Par mika0102 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 09/04/2008, 10h44
  4. récupération des noms de fichiers existant dans un répertoire
    Par tangjuncn dans le forum Général VBA
    Réponses: 1
    Dernier message: 06/11/2007, 20h12
  5. Réponses: 6
    Dernier message: 11/10/2007, 19h46

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