84 votes

Obtenir le nom du dossier courant par une commande DOS ?

Est-il possible d'obtenir le nom du dossier courant (et non le chemin du répertoire courant) en utilisant une commande DOS ? Si oui, comment ?

Ce que j'ai trouvé de plus proche, c'est ça, mais ça ne marche pas :

for /f "delims=\" %%a in ("%CD%") do set CURR=%%a
echo.DIR: %CURR%

note : la tentative ci-dessus était une tentative de tokenisation de la chaîne de caractères et d'obtention du dernier token comme variable CURR.

5voto

chobo2 Points 14705

Vous pouvez obtenir le répertoire actuel dans une variable. Un seul mot :

set a=%cd%

Vérifiez avec

echo %a%

3voto

kygg Points 31

Juste simple

for %%d in ("%CD%") do echo %%~nxd

ou

set "sPath=."
for %%d in ("%sPath%") do set "sDirName=%%~nxd"

Attention à la barre oblique inverse de la fin du chemin, il ne faut pas que ce soit la barre oblique inverse de la fin.

1voto

djangofan Points 2677

Ma réponse dans ce fil le fait en 3 lignes simples :

@echo off
SET "CDIR=%~dp0"
:: for loop requires removing trailing backslash from %~dp0 output
SET "CDIR=%CDIR:~0,-1%"
FOR %%i IN ("%CDIR%") DO SET "PARENTFOLDERNAME=%%~nxi"
ECHO Parent folder: %PARENTFOLDERNAME%
ECHO Full path: %~dp0
pause>nul

1voto

nem50 Points 11

Cela fonctionne pour moi à partir d'un fichier batch. Elle renvoie le nom du répertoire de travail actuel.

pushd %1 & for %%i in (.) do @echo %%~ni

0voto

Garric Points 97

Presque toutes les options de code ci-dessus conduiront à une erreur si vous appelez le fichier bat depuis l'extérieur par un autre script ou programme. Par exemple, ce code : for %%I in (.) do set CurrDirName=%%~nxI, lorsqu'il est appelé depuis Notepad++, produira Notepad++, mais je n'ai pas besoin d'un nom de dossier parent Notepad++ sûrement ! C'est une mauvaise méthode. De plus, pour la même raison, n'utilisez pas %cd% ni aucune autre option. Utilisez uniquement les paramètres d'entrée de ce script, peut-être situé à distance. Sinon, vous obtiendrez le résultat pour l'appelant, mais pas appelé script et ce qui est écrit dans sa ligne de commande, mais pas ce qui doit être écrit dans la ligne de commande du code appelé. Utilisez ce code pour éviter les erreurs :

    set path=%~p0
    set path=%path:~0,-1%
    For %%A in ("%path%") do (Set CurrDirName=%%~nxA)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X