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 :

[Batch] Probleme avec Setlocal EnableDelayedExpansion


Sujet :

Scripts/Batch

  1. #1
    Membre averti
    Inscrit en
    Février 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 47
    Par défaut [Batch] Probleme avec Setlocal EnableDelayedExpansion
    Bonjour,

    je dois faire un fichier bat pour pouvoir automatiser l'upload de fichier jar (java)
    sur le repo d'entreprise.

    Mon fichier batch recupere tous les jar d'un repertoire recupere les noms des
    fichier en enlevant l'extention et pour finir il lance la procedure d'upload.
    Naturellement je fais tout ca dans une boucle.
    Pour que cela fonctionne j'utilise l'expansion de variable avec la commande
    set EnableDelayedExpansion

    voici mon script:
    En entré il prend dans l'ordre un groupeID, un numéro de version et le chemin du repertoire à lister
    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
    @echo off
    
    del deploy.tmp
    dir %3\*.jar /b > deploy.tmp
    
    rem setlocal enabledelayedexpansion
    setlocal EnableDelayedExpansion
    for /F "delims=\"  %%D in (deploy.tmp) do (
    	set mavar=%%D
    	set artifactID=!mavar:~0,-4!
    	echo !mavar!
    	echo !artifactID!
    	mvn deploy:deploy-file -DgroupId=%1 -DartifactId=!artifactID! -Dversion=%2 -Dpackaging=jar -Dfile=%3\%%D -Durl=monrepo -DrepositoryId=deploymentRepo -e
    )
    endlocal
    Quand je le lance il fonctionne bien pour la 1ere occurence mais ensuite
    il perd les variables (nom de fichier avec et sans extention) sans que je comprenne pourquoi.

    Est ce que quelqu'un pourrait m'aider?

    Merci d'avance pour votre aide.

  2. #2
    Membre éprouvé

    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2011
    Messages : 104
    Par défaut
    Bonjour,

    peux-tu montrer le contenu du fichier deploy.tmp ?

  3. #3
    Membre averti
    Inscrit en
    Février 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 47
    Par défaut
    En fait je t'explique.

    Le bat lis le contenu d'un dossier que je met en paramètre et met la liste des fichier .jar dans le fichier deploy.tmp. Ce n'est qu'un fichier temporaire dont je me sert pour recupérer les listes des fichiers.
    voila son contenu:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    base.jar
    baseXmlBeans.jar
    Bien entendu son contenu varie en fonction du dossier que je scanne.

  4. #4
    Membre éprouvé

    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2011
    Messages : 104
    Par défaut
    ton code n'a pas d'erreur en effet:

    As-tu essayé d’exécuter ton batch dans un environnement différent ?

    je rajouterai que tu peux optimiser ton code en remplaçant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    set mavar=%%D
    set artifactID=!mavar:~0,-4!
    echo !mavar!
    echo !artifactID!
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	echo %%~nxD
    	echo %%~nD
    ce qui te permettra aussi de supprimer la ligne "setlocal EnableDelayedExpansion"

  5. #5
    Membre averti
    Inscrit en
    Février 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 47
    Par défaut
    mon collegue l'a essayé sur son poste, il ne fonctionne pas non plus. Le truc qui me rend fou c'est que lorsque je fais un simple "echo" il m'affiche les bonnes valeurs et lorsque je veux utiliser ces valeurs, ca ne fonctionne pas.

  6. #6
    Membre éprouvé

    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2011
    Messages : 104
    Par défaut
    Bon... comme je n'ai pas envie que tu deviennes fou (), j'ai pris la penne de regarder ton problème un peu plus en profondeur et voila ce que j'en déduis:

    la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mvn deploy:deploy-file -DgroupId=%1 -DartifactId=!artifactID! -Dversion=%2 -Dpackaging=jar -Dfile=%3\%%D -Durl=monrepo -DrepositoryId=deploymentRepo -e
    envoi des parametres au fichier "mvn.bat" qui lui exécute la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    %MAVEN_JAVA_EXE% %MAVEN_OPTS% -classpath %CLASSWORLDS_JAR% "-Dclassworlds.conf=%M2_HOME%\bin\m2.conf" "-Dmaven.home=%M2_HOME%" org.codehaus.classworlds.Launcher %MAVEN_CMD_LINE_ARGS%
    .
    Tes arguments sont contenu dans la variable %MAVEN_CMD_LINE_ARGS% donc le probleme viens du fait qu'un batch remplace les "=" par un espace.

    Conclusion: essaye de mettre tes arguments entre guillemet !

    ps: pourquoi faire simple quand on peu faire compliqué

  7. #7
    Membre averti
    Inscrit en
    Février 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 47
    Par défaut
    Citation Envoyé par Cmanix Voir le message
    Conclusion: essaye de mettre tes arguments entre guillemet !

    ps: pourquoi faire simple quand on peu faire compliqué
    j'ai essayé la ligne de commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mvn deploy:deploy-file -DgroupId="%1" -DartifactId="!artifactID!" -Dversion="%2" -Dpackaging=jar -Dfile="%3\%%D" -Durl=dav:http://frdevfwk01:8080/archiva/repository/snapshots -DrepositoryId=deploymentRepo -e
    ca n'a rien changé. Il prend le premier ca marche, à la 2eme itération il pete. c'est incompréhensible :-/

  8. #8
    Membre éprouvé

    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2011
    Messages : 104
    Par défaut
    Il prend le premier ca marche, à la 2eme itération il pete. c'est incompréhensible :-/
    -> Premièrement tu est pessimiste ; deuxièmement tu ne prend même pas le temps de regarder ce que j'ai écrit.

    Dans la commande exécuté par mvn.bat il y a "-Dclassworlds.conf=%M2_HOME%\bin\m2.conf". Ce qui devrait te montrer comment placer les guillemets !

  9. #9
    Membre averti
    Inscrit en
    Février 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 47
    Par défaut
    Citation Envoyé par Cmanix Voir le message
    -> Premièrement tu est pessimiste ; deuxièmement tu ne prend même pas le temps de regarder ce que j'ai écrit.

    Dans la commande exécuté par mvn.bat il y a "-Dclassworlds.conf=%M2_HOME%\bin\m2.conf". Ce qui devrait te montrer comment placer les guillemets !
    J'ai essayé toutes les combinaisons possibles pour les guillemets

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mvn deploy:deploy-file -DgroupId=%1 "-DartifactId=%artifactID%" -Dversion=%2 -Dpackaging=jar -Dfile=%3\%%D -Durl=dav:http://frdevfwk01:8080/archiva/repository/snapshots -DrepositoryId=deploymentRepo -e
    le résultat est toujours le meme. 1ere occurence OK ensuite erreur

  10. #10
    Membre éprouvé

    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2011
    Messages : 104
    Par défaut
    Si la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mvn "deploy:deploy-file" "-DgroupId=%1" "-DartifactId=!artifactID!" "-Dversion=%2" "-Dpackaging=jar" "-Dfile=%3\%%D" "-Durl=monrepo" "-DrepositoryId=deploymentRepo" -e
    ne passe pas, alors essaye de traiter directement avec l’exécutable java sans passer par mvn.bat .

  11. #11
    Membre averti
    Inscrit en
    Février 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 47
    Par défaut
    Bon je suis passé par une astuce mais ca marche enfin:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd.exe /q /c mvn deploy:deploy-file -DgroupId=%1 -DartifactId=!artifactID! -Dversion=%2 -Dpackaging=jar -Dfile=%3\%%D -Durl=dav:http://frdevfwk01:8080/archiva/repository/snapshots -DrepositoryId=deploymentRepo -e
    en fait j'appelle une autre console pour m'executer ma commande. Cette fois ca fontionne, je ne sais pas trop pourquoi, mais ca marche.

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

Discussions similaires

  1. probleme avec :streams type cannot be used in batching
    Par riadhhwajdii dans le forum Hibernate
    Réponses: 0
    Dernier message: 21/01/2010, 16h55
  2. batch - probleme avec Prndrvr.vbs
    Par kiko26 dans le forum Windows
    Réponses: 3
    Dernier message: 17/08/2006, 10h25
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

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