É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
for %%a in (.) do set currentfolder=%%~na
echo %currentfolder%
De là: https://superuser.com/questions/160702/get-current-folder-name-by-a-dos-command
Voici la réponse
for %%a in ("%cd%") do set folder=%%~na
echo.%folder%
pause
ou tu peux faire quelque chose comme ça
@ECHO OFF
FOR %%a IN (.) DO SET currentfolder=%%~nxa
ECHO %currentfolder%
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"