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 :

For find compliqué a mettre en place.


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Autre
    Inscrit en
    Juin 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Autre
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2014
    Messages : 2
    Par défaut For find compliqué a mettre en place.
    Bonjour les gens,

    Je me suis mis au batch depuis peu et il me faudrait quelques conseils car j'ai encore un peu de mal avec les For, je sens qu'ils tiennent la solution a mon problème mais cela me reste encore compliqué a conceptualiser.

    Ce que je veux faire:

    - Explorer une arborescence à la recherche de fichiers.
    Les fichiers en question n'ont pas d’extension juste 8 caractères.
    - Ensuite, chaqu'un des fichiers doit etre "scanner" a la recherche d'un mot (voir plusieurs foi le même a des emplacements différents).
    - Ensuite j'affiche le nom du fichier qui contient le mot.
    - Ensuite il faudra que j'apprenne a extraire des données des fichiers.

    Pour le moment j'ai un truc comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    FOR /R %cd% %%G IN (*) do (
    find /n /i "MonMot" "%%G"
    echo le fichier %%G contient le mot cherché.
    )
    "For /R" pour le coté récurcif chercher dans des sous-dossiers, "%cd%" car dans une autre partie de mon code j'ai on c'est déplacé a la racine de mon arborescence.
    "%%G" ça c'est la variable que for utilise pour savoir ou il en est (enfin il me semble) IN (*) j'ai mis * car cela me semblait logique vu que mes fichiers n'ont pas d’extension.

    Puis si j'ai bien compris, for trouve un fichier lance Find. Qui lui cherche MonMot dans le fichier qui est ciblé dans la variable %%G.
    Jusque la j'ai bon? Ou mon for est tout moisi? ^^,

  2. #2
    Membre émérite Avatar de gretch
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2006
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 165
    Par défaut
    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    REM un simple dir permet de lister un repertoire, findstr pour retrouver ton expression. le tout est envoyé dans un doc nommer "c:\liste_correspondance.txt" sur c:\
    dir /s /b | findstr /m "MonMot" >c:\liste_correspondance.txt
    REM la ligne suivante te permet de parcourir un fichier ligne par ligne (tu en aura vite besoin ;) )
    for /f "delims=" %%a in (c:\liste_correspondance.txt) do echo %%a
    REM j'ouvre le fichier "c:\liste_correspondance.txt" pour que tu t'en rende compte ; et je le supprime)
    "c:\liste_correspondance.txt"
    del "c:\liste_correspondance.txt"
    pause

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Autre
    Inscrit en
    Juin 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Autre
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2014
    Messages : 2
    Par défaut
    Merci, c'est bien ce qu'il me semblait avec un findstr seul ça marche bien aussi,

    En fait mon code ne marchait pas principalement parce que je n'ai pas les droits pour explorer les fichiers du dossier. Ailleurs ça marche nikel.
    Pour contourner le problème je me suis mis en admin, mais du coup je suis plus dans le bon dossier (en l'occurance %LOCALAPPDATA%.)
    [Edit: En admin ça marche pas non plus :\]

    Pour la petite histoire, je veux/voulais (pour le moment c'est en pause) faire un calculateur pour un jeux en ligne.
    Apres une version manuel en Batch bien proprette, j'ai chercher a faire une version semi-automatique/automatique, qui remplis les champs du calculateur tout seul.

    Mais pour ça il faut que j'aille chercher les infos, comme le jeu est en Flash je me suis dit allons dans la mémoire de "FlashPlayerPlugin...exe" et prenons ce dont nous avons besoin.
    Mais le dos n'a pas d'utilitaire pour ça, ou il m'a échappé.
    Je me suis rabattu sur les temporaires du navigateur (Firefox, d'ou le LocalAppData) et je pense avoir trouvé une partie des données que je cherche enfin comme c'est en Hexa je suis pas sur a 100%. J'ai vaguement trouver une fois les valeurs similaire a celle recherchée.

    Edit: Je pensais qu'en Admin ça allait allez mais j'ai de nouveau un acces refusé, faudra que je creuse plus en avant.
    Faudra aussi que je filtre en fonction du navigateur, comme dit ma copine pourquoi tu t’embêtes a faire tout ça alors que tu es le seul a utiliser ton calculateur
    Merci grâce a toi j'ai remis les main dedans et j'ai réussis a passer la frustration du rien qui marche et du tout qui part en vrille, dommage que j'ai pas plus de temps aujourd'hui

    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
    SETLOCAL ENABLEDELAYEDEXPANSION
    rem je cherche la fenetre qui affiche le jeu en ligne [marche avec Firefox Ie et Opera]
    tasklist /fi "Windowtitle eq Mon jeu*" /fo csv /nh /v >%temp%\test.txt 2>NUL
    rem si j'ai pas d'erreur j'ai dans mon txt le nom du navigateur et le nom de l'utilisateur qui la lancé
    rem  ensuite je vais chercher mon domain\user
    for /f "tokens=7 delims=," %%a in (%temp%\test.txt) do (
    set domuser=%%a
    )
    rem la faut encore que je trouve comment isoler mon user 
    for /f "tokens=2 delims=\"  %%b in (%domuser%) do (
    set finduser=%%b
    )
    rem je CD vais dans mon cache a la recherche des infos pour mon calculateurs.
    rem TEST
    echo %finduser% oui
    pause
    rem
    set cachepath=c:\users\%finduser%\AppData\Local\Mozilla\Firefox\cache\Cache
    findstr /M "Points de bataille" "%cachepath%"
    pause

Discussions similaires

  1. mettre en place un réseau wifi
    Par Le Pharaon dans le forum Administration
    Réponses: 2
    Dernier message: 23/12/2005, 14h59
  2. [Timer] Comment mettre en place un genre de timer ?
    Par freddyboy dans le forum MFC
    Réponses: 6
    Dernier message: 04/08/2005, 10h50
  3. Réponses: 5
    Dernier message: 28/07/2004, 11h39
  4. Réponses: 1
    Dernier message: 02/06/2004, 13h59
  5. Comment mettre en place une structure 3 tiers.
    Par WOLO Laurent dans le forum Débats sur le développement - Le Best Of
    Réponses: 13
    Dernier message: 27/07/2003, 22h01

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