MSDOS - nom de répertoire courant sans chemin

Mich92 -  
cchristian Messages postés 928 Statut Membre -
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. jimi
     
    @cchristian merci !
    c vieux mais énorme
    j'ai simplifié en :

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

    echo %rep1%
    3
  2. test124 Messages postés 17 Statut Membre 4
     
    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
  3. jee pee Messages postés 9437 Date d'inscription   Statut Modérateur Dernière intervention   9 973
     
    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. Mich92
       
      Merci Jee Pee pour ton aide, je vais essayer ça de suite...
      0
  4. test1
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Mich92
     
    C exactement ça !!! merci à vous tous...
    0
  7. cchristian Messages postés 928 Statut Membre 131
     
    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
  8. cchristian Messages postés 928 Statut Membre 131
     
    Bonjour,

    c vieux mais énorme

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