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.
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
-
@cchristian merci !
c vieux mais énorme
j'ai simplifié en :
for %%f in ("%cd%") do set "rep1=%%~nxf"
echo %rep1% -
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...
++ -
ModérateurSalut
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
-
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
++ -
C exactement ça !!! merci à vous tous...
-
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! ) -
Bonjour,
c vieux mais énorme
Pourtant en vieillissant ça a tendance à diminuer .......