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

Windows Discussion :

(ms-dos) Récupérer la chaîne d'une variable temporaire dans


Sujet :

Windows

  1. #1
    Inactif
    Inscrit en
    Janvier 2006
    Messages
    202
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 202
    Points : 70
    Points
    70
    Par défaut (ms-dos) Récupérer la chaîne d'une variable temporaire dans
    Bonjour, j’ai un batch pour traiter un fichier.txt qui agis sur un fichier soit glissé déposer soit si le batch ne détecte pas de fichier glissé déposer créer un vbs qui ouvre une boite de dialogue pour sélectionner un fichier sur le disque dur et stocke le chemin du fichier sélectionné dans une variable temporaire %VarTest% retransmis au batch, l’ennuie s’est que selon si le fichier sélectionné à été glissé déposer ou sélectionné avec la boite de dialogue vbs la variable stockant le chemin du fichier à traité n’est pas la même soit %VarTest% pour la sélection ou %1 pour le glissé déposer, donc il faut que j’ajoute une ligne à mon batch qui test la variable %1 et si elle n’est pas renseigner la renseigne avec le paramètres de la variable %VarTest%, quelqu’un saurait-il m’aider ?
    Voici mon départ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If !%1==! Set %1=%VarTest%

  2. #2
    Inactif
    Inscrit en
    Janvier 2006
    Messages
    202
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 202
    Points : 70
    Points
    70
    Par défaut
    Me vien une idée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    echo "C:\Documents and Settings\user\Bureau\monFichier.txt" > fichier.txt
    for /f %%a in (fichier.txt) do call :Commande %%a
    :Commande
    echo %1
    Del fichier.txt
    Mais la variable %1 n'affiche que C:\Documents malgré les guillemets, quelqu'un voit-il se qui ne va pas la dedant ?

  3. #3
    SLE
    SLE est déconnecté
    Membre éclairé Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Points : 799
    Points
    799
    Par défaut
    Salut,

    Par défaut, la commande FOR utilise l'espace et la tabulation comme délimiteur. Il est donc logique que la première chaine de la boucle soit "C:\Documents". Il faut donc ajouter "delims=" pour annuler ces délimiteurs...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    echo "C:\Documents and Settings\user\Bureau\monFichier.txt" > fichier.txt 
    for /f "delims=" %%a in (fichier.txt) do call :Commande %%a
    goto :eof
    
    :Commande 
    echo %1 
    Del fichier.txt /Q
    goto :eof
    @+

  4. #4
    Inactif
    Inscrit en
    Janvier 2006
    Messages
    202
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 202
    Points : 70
    Points
    70
    Par défaut
    Bonjoue SLE et merci beaucoup

    Mais s'est toujour pareille

  5. #5
    SLE
    SLE est déconnecté
    Membre éclairé Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Points : 799
    Points
    799
    Par défaut
    OK c'est normal... %1 ne peut pas fonctionner puisque la chaine passée en argument contient des espaces... il faut utiliser %* à la place.

    @+

  6. #6
    Inactif
    Inscrit en
    Janvier 2006
    Messages
    202
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 202
    Points : 70
    Points
    70
    Par défaut
    Merci encore SLE mais il faut absolument que je récupére le chemiin dans la variable %1.

    N'y a t-il pas une autre solution ?

  7. #7
    Inactif
    Inscrit en
    Janvier 2006
    Messages
    202
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 202
    Points : 70
    Points
    70
    Par défaut
    Ah la variable ne veut pas aller plus loint, tester ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Set VarTest=C:\Documents and Settings\user\Bureau\monFichier.txt
    For /F "delims=" %%a In ("%VarTest%") Do call :Commande %%a
    :Commande
    echo   %1
    echo   %2
    echo   %3

  8. #8
    SLE
    SLE est déconnecté
    Membre éclairé Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Points : 799
    Points
    799
    Par défaut
    Ben oui, c'est pour ça qu'il faut utiliser %* (qui reprend tous les arguments en 1 fois).
    Je ne vois pas d'autre solution !

    @+

  9. #9
    Inactif
    Inscrit en
    Janvier 2006
    Messages
    202
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 202
    Points : 70
    Points
    70
    Par défaut
    Ok merci encore

  10. #10
    Inactif
    Inscrit en
    Janvier 2006
    Messages
    202
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 202
    Points : 70
    Points
    70
    Par défaut
    Si non n'y a t il pas moyen de faire sa simplement un peut comme ceci:
    :

  11. #11
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut,
    je ne suis pas sûr d'avoir tout compris mais ceci renseigne %1 s'il n'est pas renseigné
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @echo on
    echo Appel %1
    if %1*==* Call %0 "C:\Documents and Settings\user\Bureau\monFichier.txt"
    if not %1*==* Echo Fin  %1
    goto Fin
    For /F "Delims=*" %%a In ('echo "%VarTest%"') Do call :Commande %%a 
    :Commande 
    echo   %1 
    echo   %2 
    echo   %3
    goto :EOF
    :Fin

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/12/2011, 14h41
  2. Réponses: 1
    Dernier message: 12/04/2009, 17h54
  3. [Spip] Récupérer la valeur d'une variable PHP dans une boucle Spip
    Par papisdoums dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 10/04/2009, 19h03
  4. [PHP 5.0] Récupérer la valeur d'une variable php dans du code javascript
    Par HF974 dans le forum Langage
    Réponses: 4
    Dernier message: 08/03/2009, 11h46
  5. Réponses: 2
    Dernier message: 03/12/2008, 17h34

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