MSDOS - nom de répertoire courant sans chemin

Fermé
Mich92 - 31 janv. 2009 à 01:55
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 - 17 janv. 2011 à 04:03
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.

7 réponses

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

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

echo %rep1%
3
test124 Messages postés 12 Date d'inscription mardi 30 juin 2009 Statut Membre Dernière intervention 18 octobre 2011 4
27 juil. 2009 à 13:37
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
jee pee Messages postés 40515 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 3 décembre 2024 9 441
1 févr. 2009 à 14:39
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
Merci Jee Pee pour ton aide, je vais essayer ça de suite...
0
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
C exactement ça !!! merci à vous tous...
0
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
29 juil. 2009 à 00:23
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
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
17 janv. 2011 à 04:03
Bonjour,

c vieux mais énorme

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