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 :

recuperer chaine entre guillemets : expression reguiliere [Batch]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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 recuperer chaine entre guillemets : expression reguiliere
    bonjour ^^

    voila mon petit souci,
    j'ai une chaine de caractères sortie d'un reg /query genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ! REG.EXE VERSION 3.0
    
    HKEY_CLASSES_ROOT\Applications\firefox.exe\shell\open\command
        <SANS NOM>    REG_SZ    "C:\Program Files\Mozilla Firefox\firefox.exe" -requestPending -osint -url "%1"
    j'aimerais ne récuperer que
    1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Program Files\Mozilla Firefox\firefox.exe
    voir meme :

    2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Program Files\Mozilla Firefox\
    mais pour passer de 1 à 2 je pense savoir comment faire ^^
    qq aurait une idée ?

  2. #2
    Membre Expert
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Par défaut
    Salut,

    Tu filtres ta sortie reg par un find, et tu fais traiter ton résultat par une boucle for avec la substitution de référence qui va bien (cf for /?)

  3. #3
    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
    @minnesota : merci de ta participation.
    Tu filtres ta sortie reg par un find, et tu fais traiter ton résultat par une boucle for(...)
    jusque là aucun problème ^^
    avec la substitution de référence qui va bien
    c'est là que ça coince... je doit avoué ne pas etre tres doué avec les expressions regulières et la manipulation de chaine !

    je me doute que ça doit tirer vers un truc comme ça...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FOR /F tokens=1* delims=" %i in (monfich.txt) do @echo %i
    mais bon ça ne marche pas :/

  4. #4
    Membre Expert
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Par défaut
    Citation Envoyé par gretch Voir le message
    jusque là aucun problème ^^
    Je veux bien mais il est où le "find" alors ?

    Pour ton dernier point -> http://www.developpez.net/forums/d11...ine-caractere/

  5. #5
    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
    Dsl, je te met le script au complet ça peut etre plus simple à comprendre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    @echo off
    set tmpfile="%cd%\test.txt"
    reg query HKEY_CLASSES_ROOT\Applications\firefox.exe\shell\open\command>%tmpfile%
    
    findstr "Firefox" %tmpfile%
    REM FOR /F tokens=1 delims=\" %i in (%tmpfile%) do @echo %i 
    pause
    voila en gros ce que j'ai jusque là.
    c'est clairement le FOR qui déconne...
    je n'arrive pas à isoler la chaine à l’intérieur des guillemets.

  6. #6
    Membre Expert
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for /f "tokens=4" %%i in ('reg query hkcr\applications\firefox.exe\shell\open\command /ve ^| find /i "reg_sz"') do echo %%~dpi

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 15
    Par défaut
    Citation Envoyé par gretch Voir le message
    j'aimerais ne récuperer que
    1 :

    voir meme :

    2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    "C:\Program Files\Internet Explorer\IEXPLORE.EXE"
    C:\Program Files\Internet Explorer\IEXPLORE.EXE
    C:\Program Files\Internet Explorer\
    script testé uniquement sous Microsoft Windows XP avec le seul navigateur supporté officiellement par l'éditeur.
    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
    @echo off &SETLOCAL ENABLEEXTENSIONS
    set key=HKEY_CLASSES_ROOT\Applications\iexplore.exe\shell\open\command
    :# delims is a TAB followed by a space
    FOR /F "tokens=3* delims=	 " %%A IN ('reg query %key% /ve 2^>nul ^|find /i "_SZ"') do set data=%%B
    if "_"=="_%data%" echo/[data not set] &goto :eof
    SET data=%data:"=#% &call :__loop #
    :__final
    SET data=%data:#="%
    echo/%data%
    set data=%data:"=%
    echo/%data%
    call :__loop \
    echo/%data%
    goto :eof
    :__loop
    IF "%data:~-1%" NEQ "%1" SET "data=%data:~0,-1%" &goto :__loop
    goto :eof
    + de tutoriaux et exemples ici

  8. #8
    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
    @all : Merci de m'aider vraiment cool ^^

    @Raviac : c'est pas tant d'enlever les guillement qui m'embetais le plus c'etait de ne garder que leurs contenu :/

    @Bilou_Gateux : Merci c'est presque ça !!! j'ai changé 2 points histoire d'avoir exactement ce que je voulais ^^ :

    1. J'ai augmenter le token de la boucle de 3* à 4* pour ne pas récupérer le << REG_SZ >>
    2. J'ai rajouté : set %data%=%%~dpdata histoire de ne récupérer ni le nom de fichier ni les arguments derriere (ça marchait bien sur IE car pas d'arguments mais pour FF ma ligne continuait ^^)

    En tout cas merci pour tout !
    je vous met le code définitif si dessous ^^

    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
    @echo off &SETLOCAL ENABLEEXTENSIONS
    set key=hkcr\applications\firefox.exe\shell\open\command
    :# delims is a TAB followed by a space
    FOR /F "tokens=4* delims=     " %%A IN ('reg query %key% /ve 2^>nul ^|find /i "_SZ"') do set data=%%B
    if "_"=="_%data%" echo/[data not set] &goto :eof
    SET data=%data:"=#% &call :__loop #
    :__final
    SET data=%data:#="%
    echo/%data%
    set data=%data:"=%
    echo/%data%
    call :__loop \
    echo/%data% 
    set %data%=%%~dpdata
    
    pause
    goto :eof
    :__loop
    IF "%data:~-1%" NEQ "%1" SET "data=%data:~0,-1%" &goto :__loop
    goto :eof

  9. #9
    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
    Citation Envoyé par Bilou_Gateux
    + de tutoriaux et exemples ici
    Merci ça à l'air trés bien ^^

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

Discussions similaires

  1. Regex : récuperer une chaine entre deux guillemets anglais(")
    Par Phonatacid dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 01/06/2011, 11h02
  2. explode par espace sauf chaine entre guillemet
    Par calitom dans le forum Langage
    Réponses: 3
    Dernier message: 12/02/2010, 15h48
  3. Extraire une chaine entre guillemets
    Par grenouille2008 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 01/07/2008, 16h40
  4. recuperer toute les chaine entre a et b
    Par bailamos dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 20/02/2008, 23h02
  5. Réponses: 4
    Dernier message: 29/05/2006, 15h27

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