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 :

récupération plusieurs parametres contenant des espaces [Batch]


Sujet :

Scripts/Batch

  1. #1
    Membre averti Avatar de julioclay
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 16
    Par défaut récupération plusieurs parametres contenant des espaces
    Bonjour,

    Je débute en script batch et je me confronte à quelques petits problèmes.
    Je cherche donc à faire un script intitulé "listing.bat" qui me permet de lister dans un fichier "listing.txt" tous les fichiers correspondant aux paramètres que je passe à la commande!
    Seulement j'ai un problème lorsque je passe plusieurs paramètres contenant des espaces.

    voici la partie de mon script qui pose problème:

    if not "%1"=="" goto Boucle

    en fait je viens lire chaque paramètre que je compare à chaque fois avec la chaine de caractère vide pour savoir si c'était le dernier et ainsi de suite.

    Par exemple: listing.bat "war pigs" "you do".
    Ici le 1er paramètre est bien pris en compte mais pas le 2ème. L'erreur renvoyée est: do""=="" était inattendu.

    Alors j'ai essayé d'enlever les guillemets autour de %1: if not %1=="" goto Boucle, là les paramètres sont bien pris en compte mais une autre erreur sort: goto était inattendu.

    quelqu'un a une idée?

    Merci par avance,
    Julien.

    Ps: désolé si ma question fait doublon avec un autre sujet mais j'ai pas trouvé de discussion via l'outil de recherche du forum...

  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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if not "%~1"=="" goto Boucle

  3. #3
    Membre averti Avatar de julioclay
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 16
    Par défaut
    Citation Envoyé par minnesota Voir le message
    salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if not "%~1"=="" goto Boucle
    Merci pour la réponse
    Qu'est-ce que signifie le symbole ~ (en particulier dans ce cas là)?

  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
    ça supprime les guillemets (") s'il y en a

  5. #5
    Membre averti Avatar de julioclay
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 16
    Par défaut
    Citation Envoyé par minnesota Voir le message
    ça supprime les guillemets (") s'il y en a
    je ne suis pas sûr d'avoir bien compris comment fonctionne ~

    Dans cette exemple je n'arrive pas à savoir où je dois mettre ~ pour enlever les guillemets à ma variable chemin:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    set /p chemin=saisissez le chemin du repertoire: 
    
    for /r "%chemin%" %%a in (*%1*) do (
    si je tape des noms de chemin sans guillemets d:\mp3 pas de problème. Par contre dès que je tape "d:\a trier" (avec les guillements cette fois) la console me renvoi cette erreur: trier"" était inattendu??

    quelqu'un peut m'expliquer le fonctionnement de ~ pour enlever les guillemets dans le cas d'une variable %chemin%

    merci par avance,
    Julien.

  6. #6
    Membre averti Avatar de julioclay
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 16
    Par défaut
    up

    Quelqu'un a une idée?

  7. #7
    Membre Expert
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Par défaut
    Le ~ opère une substitution essentiellement sur des paramètres et des arguments. Pour les variables, il sert aussi à faire des extractions de chaines. tu peux consulter l'aide en ligne de set et de for pour cela.

    En ce qui concerne ton problème, il y a plusieurs possibilités dont l'une pourrait être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    
    set /p chemin=saisissez le chemin du repertoire:
    
    for /f "tokens=*" %%i in ('echo %chemin%') do for /r "%%~i" %%a in (*%1*) do (

  8. #8
    Membre averti Avatar de julioclay
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 16
    Par défaut
    Citation Envoyé par minnesota Voir le message
    Le ~ opère une substitution essentiellement sur des paramètres et des arguments. Pour les variables, il sert aussi à faire des extractions de chaines. tu peux consulter l'aide en ligne de set et de for pour cela.

    En ce qui concerne ton problème, il y a plusieurs possibilités dont l'une pourrait être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    
    set /p chemin=saisissez le chemin du repertoire:
    
    for /f "tokens=*" %%i in ('echo %chemin%') do for /r "%%~i" %%a in (*%1*) do (
    Ok merci pour l'astuce !!

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

Discussions similaires

  1. [Langage/Algorithme] Appel de ShellExecute avec parametres contenant des espaces.
    Par Godzestla dans le forum C++Builder
    Réponses: 4
    Dernier message: 04/10/2011, 14h47
  2. passer d'une chaine contenant des espaces a un tableau
    Par flyfrog dans le forum Contribuez
    Réponses: 3
    Dernier message: 26/06/2006, 20h12
  3. Recuperer une variable contenant des espaces
    Par phpaide dans le forum Langage
    Réponses: 9
    Dernier message: 30/05/2006, 16h07
  4. Paramètres contenants des espaces
    Par ujoodha dans le forum Linux
    Réponses: 1
    Dernier message: 12/05/2006, 12h29
  5. Renommer des fichiers contenant des espaces
    Par MatRem dans le forum Linux
    Réponses: 6
    Dernier message: 28/04/2006, 08h21

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