web-dev-qa-db-fra.com

Obtenir le nom du répertoire à partir du chemin de% CD%

Étant donné que le répertoire en cours, %CD% est 

C:\Parent\Child

Dans un fichier de commandes, comment puis-je obtenir la valeur Child dans une variable?

merci

17
Valamas
for %%a in (.) do set currentfolder=%%~na
echo %currentfolder%

De là: https://superuser.com/questions/160702/get-current-folder-name-by-a-dos-command

28
manojlds

Voici la réponse

for %%a in ("%cd%") do set folder=%%~na
echo.%folder%
pause
3
Valamas

ou tu peux faire quelque chose comme ça

@ECHO OFF
FOR %%a IN (.) DO SET currentfolder=%%~nxa
ECHO %currentfolder%
1
Himanshu kesar

La réponse de @ manojlds n'est pas correcte dans tous les cas.

Le raccourci %%~nI fonctionne très bien pour les fichiers, mais pas pour les répertoires.

Exemple:

C:\a..o\ex.bat

@ECHO OFF
FOR %%a IN (.) DO SET currentfolder=%%~na
ECHO %currentfolder%

Si j'exécute ce fichier de commandes à partir de son emplacement, la sortie est "a.":

C:\a..o\>ex.bat
a.

Solution:

Une solution possible est la suivante:

C:\sol.bat

@ECHO OFF
SETLOCAL
SET cwd="\%~f1"
SET name=""
:extract
    SET char="%cwd:~-2,-1%"
    IF NOT %char%=="\" (
        SET cwd="%cwd:~1,-2%"
        SET name="%char:~1,-1%%name:~1,-1%"
        GOTO :extract
    )
ECHO %name%
ENDLOCAL

Tests:

C:\>sol.bat "@!%#"
"@!%#"
C:\>sol.bat a..o
"a..o"
0
user4397199