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

Scripts/Batch Discussion :

Rechercher sous-chaine dans nom fichier


Sujet :

Scripts/Batch

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 63
    Points : 25
    Points
    25
    Par défaut Rechercher sous-chaine dans nom fichier
    Bonjour à tous,

    Dans mon répertoire C:\repertoire, je voudrais récupérer tous les fichiers dont le nom contient la chaîne XXXXXX et ensuite écrire ces fichiers dans un fichier de sortie log.txt.
    Voici ce que j'ai écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    FOR /F "tokens=* delims=" %%i in ('*XXXXXX*') do (
        Set Var=%%i
        echo "%Var%" >>C:\repertoire\log.txt
        )
    Mais ça ne marche pas du tout.

    Merci de votre aide

  2. #2
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    salut,

    essaye comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    @echo off
    
    set "flag=walid"
    set "source=C:\repertoire"
    
    pushd "%source%"
    FOR /F "tokens=*" %%i in ('dir /b/s/a-d "*%flag%*.*"') do (echo.%%i >>log.txt)
    popd
    pause

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 63
    Points : 25
    Points
    25
    Par défaut
    Merci d'avoir répondu,

    Mais après avoir testé ton bout de code, j'ai rien de retourné dans mon fichier log.txt.
    Autre chose, que veut dire ces lignes svp?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    set "flag=walid"
    pushd "%source%"
    popd
    Merci encore

  4. #4
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    salut,

    Citation Envoyé par leuke Voir le message

    Mais après avoir testé ton bout de code, j'ai rien de retourné dans mon fichier log.txt.
    le fichier log.txt est dans c:\repertoire\log.txt il contient les fichiers ayant la chaîne walid dans leurs noms


    Citation Envoyé par leuke Voir le message
    set "flag=walid"
    set "flag=walid" walid est un exemple de chaîne à recherché vous pouvez la changez.

    Citation Envoyé par leuke Voir le message
    pushd "%source%"
    popd
    pushd /?
    popd /?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 63
    Points : 25
    Points
    25
    Par défaut
    Merci de ta réponse,

    Voici le bout de code qui me raméne bien les fichiers concernés

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for /f "delims=" %%a in ('dir "C:\repertoire\*XXXXXX*" /b') do call :traitement %%a
    
    :traitement 
    set valeur=%1 
    echo %valeur% >>c:\log.txt
    Seulement dans mon fichier log.txt j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    2009030216490XXXXXX.txt  
    2009030312093XXXXXX.txt  
    2009030416000XXXXXX.txt  
    2009030417313XXXXXX.txt  
    Commande ECHO activ‚e.
    Comment enlever la derniere ligne ECHO....?

    Merci encore

  6. #6
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    Salut,

    le code que je vous ai donné fonctionne, il fallait simplement le configurer pour qu'il retourne le resultat que vous voulez, avec un set "flag=XXXXXX"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    @echo off
    
    set "flag=XXXXXX"
    set "source=C:\repertoire"
    
    pushd "%source%"
    FOR /F "tokens=*" %%i in ('dir /b/a-d "*%flag%*.*"') do (echo.%%i >>c:\log.txt)
    popd
    pause

    pour votre code voici quelques remarques:


    - vous utiliser un sous-programme dans votre code: je ne vois pas l'utilité

    - dir /b , oui, mais elle va retourner les fichiers et les répertoires
    qui comportent la chaîne "XXXXXX" vous devez mettre un dir /a-d /b
    pour ne filtrer que les fichiers

    - dans votre code pourquoi mettre le paramètre %1 dans une variable ?! je ne vois pas l'utilité

    - avec un %1, si vous avez un nom de fichier comportant des espaces il va être tronquer il vaut
    mieux utiliser le paramètre spécial %*

    - mettre toujours l'un de ces signes devant la commande ECHO si elle essaye d'afficher une variable \/+.:;
    (pour le débogage il est conseiller de ne pas les utiliser)

    enfin voici un lien pour vous familiariser avec les sous programmes

    ** Bonne Continuation **

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 63
    Points : 25
    Points
    25
    Par défaut
    Bonjour,

    Effectivement ça marche et merci pour ces suggessions. Cependant chaque fichier récupéré est triplé dans mon fichier log.txt. C'est-à-dire pour chaque fichier que je doit récupérer dasn mon log.txt apparaît 3 fois.

    Merci

  8. #8
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    Salut,

    Citation Envoyé par leuke Voir le message
    Bonjour,

    Effectivement ça marche et merci pour ces suggessions. Cependant chaque fichier récupéré est triplé dans mon fichier log.txt. C'est-à-dire pour chaque fichier que je doit récupérer dasn mon log.txt apparaît 3 fois.
    Merci
    quel code utilises-tu ? car le code que je t'ai donné fonctionne sans ce bug.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    @echo off
    
    set "flag=XXXXXX"
    set "source=C:\repertoire"
    
    pushd "%source%"
    FOR /F "tokens=*" %%i in ('dir /b/a-d "*%flag%*.*"') do (echo.%%i >>c:\log.txt)
    popd
    pause

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 63
    Points : 25
    Points
    25
    Par défaut
    Bonjour,

    Effectivement ça marche!!!

    Merci encore

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

Discussions similaires

  1. [XL-2010] Recherche sous chaine dans une liste
    Par lbar012001 dans le forum Excel
    Réponses: 7
    Dernier message: 29/08/2012, 14h21
  2. Rechercher une chaine dans un fichier
    Par kali38 dans le forum Général Python
    Réponses: 8
    Dernier message: 27/05/2011, 21h56
  3. Réponses: 0
    Dernier message: 04/11/2008, 21h46
  4. Rechercher une chaine dans un fichier
    Par bigey3 dans le forum Langage
    Réponses: 12
    Dernier message: 30/05/2008, 16h35
  5. Rechercher une chaine dans un fichier Excel
    Par matcram dans le forum ASP
    Réponses: 1
    Dernier message: 03/10/2007, 21h59

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