Partage
  • Partager sur Facebook
  • Partager sur Twitter

[BATCH] Variable avec espace en retour d'un DIR

    7 octobre 2020 à 15:48:44

    for /f %%i in ('dir /b c:\Delphi*2017*') do set delphi=c:\%%i
    echo Delphi 2017 est present dans le dossier : %delphi%
    del /s /q %delphi%\*.*
    rd /s /q %delphi%

    Bonjour à tous, c'est mon premier post ici, car j'ai toujours reussi grace aux autres sujets à résoudre mes problèmes.
    je fais un script simple, j'ai quelques connaissances en batch mais la je bute si vous pouvez m'aider svp.
    je cherche grace à une commande DIR à savoir s'il existe un dossier commençant par "delphi" et contenant "2017"
    Jusque la aucun soucis, ma commande fonctionne à merveille.
    Je voudrais passer le resultat en variable pour ensuite pouvoir effacer le contenu de ce dossier puis le dossier lui même.
    le problème est là : Si le dossier se nomme "Delphi_bla_2017_bla_bla" sans espaces pas de soucis j'ai en retour "présent dans C:\Delphi_2017" et je peux continuer ma suppression tranquille, par contre s'il se nomme "Delphi 2017 bla bla bla" alors le retour de ma variable est juste "delphi"
    Avez vous des idées ? j'ai essayé des guillemets sur la variable, sur l'echo ou autre, ca m'affiche juste les guillement en + , mais toujours le premier mot avant l'espace uniquement
    Merci beaucoup :)

    -
    Edité par MikeBsh 7 octobre 2020 à 15:49:57

    • Partager sur Facebook
    • Partager sur Twitter
      7 octobre 2020 à 19:19:47

      Quand utilises-tu le paramètre %%i du for dans le script?
      Si tu as des espaces dans les noms de fichier ou de dossier, il faut mettre le %%i entre guillemets.
      • Partager sur Facebook
      • Partager sur Twitter

      Le Tout est souvent plus grand que la somme de ses parties.

        7 octobre 2020 à 19:22:47

        Salut,

        Par défaut il existe un délimiteur (delims=" ") qui a comme valeur un espace ce qui fait que %%i ne contient que la première partie du nom de dossier.

        Essaye ceci:

        for /f "delims=" %%i in ('dir /b c:\Delphi*2017*') do set delphi=c:\%%i
        echo Delphi 2017 est present dans le dossier : %delphi%
        del /s /q %delphi%\*.*
        rd /s /q %delphi%



        • Partager sur Facebook
        • Partager sur Twitter
          7 octobre 2020 à 19:56:57

          Magnifique j'avais complètement oublié le delims ! ça à l'air de fonctionner !

          edit : c'est bon ca fonctionne ca prends la variable, et ca me supprime bien le contenu du dossier et le dossier (en ayant ajouté des guillement pour les commandes DEL et RD bien sur ^^)

          PierrotLeFou a écrit:

          Quand utilises-tu le paramètre %%i du for dans le script?
          Si tu as des espaces dans les noms de fichier ou de dossier, il faut mettre le %%i entre guillemets.

          Ben le %%i est entré dans la variable delphi a la fin de la ligne :)  et j'avais essayé les guillements, ca ne fait que les ajouter a la variable, mais la solution proposée au dessus a fonctionné 

          -
          Edité par MikeBsh 7 octobre 2020 à 19:59:25

          • Partager sur Facebook
          • Partager sur Twitter

          [BATCH] Variable avec espace en retour d'un DIR

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown