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 :

trouver la derniere occurence dans une chaine de caractére [Batch]


Sujet :

Scripts/Batch

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 8
    Points : 6
    Points
    6
    Par défaut trouver la derniere occurence dans une chaine de caractére
    Bonjour,

    Je cherche à récupérer le nom du dernier dossier dans un chemin.
    Par exemple j'ai le chemin suivant dans la variable %%chemin:
    chemin="C:\archive\Folder example2"

    Je cherche à obtenir "Folder example2" dans une variable. La valeur de la variable %%chemin change (elle est dans une boucle).

    Par la suite on a :
    chemin="C:\archive\Dossier test
    Et là je veux récupérer "Dossier test"

    J'ai regardé du côté des chaines de caractères, mais je suis un peu bloqué.

    Quelqu'un a une idée ?

  2. #2
    Futur Membre du Club
    Inscrit en
    Octobre 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 8
    Points : 7
    Points
    7
    Par défaut petite piste, pas grande aide
    as-tu déjà songé à utiliser un sed?

    voici une commande que j'utilise pour récupérer le nom de mon script shell (les arguments du sed reste les mêmes je suppose):

    pwd | sed 's/.*\/\([^/]*\)\.sh$/\1/g'


    celà me retourne le nom de mon script sans l'extension.
    Par peut-être de là pour essayer de récuper ce que tu cherche...
    (oublie le pwd et remplace-le par le nom de ta variable qui contient ton chemin )

  3. #3
    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,

    exemple de chemin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    set chemin=C:\archive\Folder example2
    avec gawk
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo/%chemin%|gawk -F\ "{print $NF}"
    avec cut --> si le chemin est de la forme "x\x\x"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo/%chemin%|cut -d\ -f3-
    avec sed
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo/%chemin%|sed "s/^.*\\\(.*\)/\1/"
    solution native
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    en natif --> for %%n in ("%chemin%") do echo.%%~nxn

  4. #4
    Futur Membre du Club
    Inscrit en
    Octobre 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Merci à vous 2.
    J'aimerais autant que possible utiliser une solution native.

    J'ai repris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for %%n in ("%chemin%") do echo.%%~nxn
    Ca fonctionne, mais quand j'essaie de l'insérer dans ma boucle, rien ne va plus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for /f "delims=" %%X IN ('TYPE %chemin_listing%') do (
    for %%n in (%%X) do echo.%%~nxn
    ROBOCOPY "%%X" C:\%dossierarchive%\%%~nxn  /MIR /SEC /TEE /LOG+:c:\journal_critical_folders.log
    )
    %%X vaut "C:\archive\Folder example2"
    Mais%%~nxn me retourne Folder puis example
    J'aimerais pouvoir utiliser "Folder example2"

    Puis lorsque %%X vaudra "C:\archive\Autre dossier", que ça retourne "Autre dossier"
    J'avais pensé utiliser une nouvelle fois "delims=", mais visiblement ce n'est pas ça.

  5. #5
    Futur Membre du Club
    Inscrit en
    Octobre 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for /f "delims=" %%X IN ('TYPE %chemin_listing%') do (
    for /f "delims=" %%n in ("%%X") do ROBOCOPY "%%X" "C:\%dossierarchive%\%%~nxn"  /MIR /SEC /TEE /LOG+:c:\journal_critical_folders.log
    )
    Et là c'est bon.
    Merci.

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

Discussions similaires

  1. Souligner des occurences dans une chaine de caractères
    Par bilou_12 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/06/2012, 15h44
  2. Réponses: 13
    Dernier message: 22/07/2008, 22h03
  3. Réponses: 2
    Dernier message: 14/11/2007, 16h43
  4. [RegEx] Trouver certains mots entre [] dans une chaine de caractères
    Par Prosis dans le forum Langage
    Réponses: 3
    Dernier message: 22/10/2007, 21h52
  5. Réponses: 4
    Dernier message: 09/09/2006, 10h18

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