MSDOS - nom de répertoire courant sans chemin

Bonjour,

Je souhaiterais écrire le nom du répertoire courant dans une variable (sans indiquer le chemin complet, cad pas un truc du type SET "directory=%~dp0" ou SET "directory=%CD%")

ex :
répertoire=c:/commentcamarche/forum/forum-programmation/

...donnerais, variable=forum-programmation.
Configuration: Windows XP
Internet Explorer 6.0

7 réponses

  1. @cchristian merci !
    c vieux mais énorme
    j'ai simplifié en :

    for %%f in ("%cd%") do set "rep1=%%~nxf"

    echo %rep1%
    3
    1. après moult test et retest

      voici la commande à mettre dans un bat

      @echo off
      set REP=%CD%
      :ici
      echo %rep% |FINDSTR /C:\ & if %errorlevel% EQU 0 (goto oui) else (goto non)
      :oui
      set REP=%REP:*\=%
      goto ici
      :non
      echo %rep%
      pause

      voili, voilou...

      ++
      1
      1. Modérateur
        Salut

        Tu peux utiliser la syntaxe de substitution : set VAR=%VAR:chaine1=chaine2% chaine 1 étant remplacée par chaine 2, chaine 1 pouvant contenir * et chaine 2 pouvant être vide, donc on remplace tout ce qui précède \ par rien.

        La fonction n'est effectuée qu'une fois, il faut donc le faire plusieurs fois, j'ai essayé avec des boucles, mais la valeur initiale d'une variable étant persistante à celle avant d'entrer dans la boucle cela ne marche pas. Donc version grobourrin, plusieurs lignes (le max de niveaux de ton arborescence) dans le .bat :-)

        set REP=%CD%
        set REP=%REP:*\=%
        set REP=%REP:*\=%
        set REP=%REP:*\=%
        ...
        echo %REP%

        cdlt
        0
        1. Merci Jee Pee pour ton aide, je vais essayer ça de suite...
          0
      2. Il faudrait faire un test pour voir si la variable %REP% contient le caractère '\' mais la commande findstr ne marche que sur des fichiers.

        Si on peut faire ça alors l'algo serait: tant qu'il y a un caractère '\' faire (set REP=%REP:*\=%) sinon echo %REP%.

        Si quelqu'un a une idée ou une autre façon de faire.

        svp, pas la solution avec un fichier temporaire que l'on crée et que l'on efface ensuite.

        merci
        ++
        0
        1. C exactement ça !!! merci à vous tous...
          0
          1. Bonjour,

            Si j'ai tout bien compris, il semble qu'il y ait plus simple:

                    FOR               %%F  IN  ("%CD%") DO     (
                        SET               "variable=%%~nxF"
                        echo variable contient : !variable!          )
            0
            1. Bonjour,

              c vieux mais énorme

              Pourtant en vieillissant ça a tendance à diminuer .......
              0