Comment puis-je obtenir le nom du dossier parent dans une invite de commande?
Je suis dans une Ligne de Commande de Windows et vous souhaitez que le dossier parent dans une variable.
En supposant répertoire courant est "C:\foo\bar" comment puis-je obtenir la valeur "bar"?
Je m'attends à quelque chose comme un "trouver la dernière barre oblique inverse en CD et c'est tout".
Et s'il vous plaît, pas de powershell références, je veux de la bonne vieille Ligne de Commande de Windows opérations.
Vous devez vous connecter pour publier un commentaire.
Ma solution utilise la substitution et travaille pour le répertoire racine ainsi:
Cela semble pour obtenir le nom du répertoire courant, et la stocke dans la variable d'environnement
bar
:Cela fonctionne parce que
%CD%
contient le répertoire courant, et%~n
bandes de la sortie de la boucle for (boucle d'une valeur,%CD%
) pour le nom de fichier',' partie.(Remarque, si vous êtes en utilisant ce dans un fichier de commandes, utilisez
%%i
et%%~ni
à la place.)Ce n'est pas, cependant, le travail pour le répertoire racine d'un lecteur, qu'il va plutôt unset
bar
, comme%~ni
permettra d'évaluer à rien.%~nxi
à l'appui de répertoires avec des extensions.%
parce que dans un fichier de commandes) quand j'ai écrit:FOR /F "delims=" %%i IN ("%CD%") DO SET bar=%%~nxi
Pmod a une solution plus propre; je ne suis pas sûr que le mien fonctionne pour les dossiers racine. Mais je pensais que je l'inclus ici pour les gens de voir.
@pmod de réponse (je n'ai pas la rep de commentaire) peut fonctionner pour les répertoires racine, mais il ne fonctionne pas si il y a des espaces dans les noms.
Ici est un peu une version améliorée (la substitution de /pour l'espace avant de les diviser, puis d'inverser la substitution lorsque vous avez terminé).