2009-06-10 8 views
15

Luttant avec la ligne de commande à nouveau, je savoir que je peux stocker le répertoire de travail courant dans une variable comme ceci:Comment définir une variable sur le chemin du répertoire parent sur les fenêtres?

SET current=%cd% 

Comment pourrais-je mettre parent bien? SET parent=%..% ne fonctionne pas, car il fait écho %..%

Fondamentalement, appeler un script batch C:\a\b\myscript.bat avec le contenu suivant:

@echo off 
set current=%cd% 
echo %current% 

impressions C:\a\b et je voudrais définir une parent variable de sorte qu'il imprimerait C:\a sans changer le répertoire de travail courant ..

Est-ce possible?

Répondre

33

Déplacer un répertoire, se rappelant le courant, définissez le parent, puis pop vers le bas un répertoire, à l'endroit où vous avez commencé

@echo off 
set current=%cd% 
pushd .. 
set parent=%cd% 
popd 

echo current %current% 
echo parent %parent% 
+0

Parfait! Je me souviens maintenant avoir vu le pushd et le popd quelque part, mais cela m'a complètement échappé. Merci de votre aide. –

+0

Vous êtes plus que bienvenue :) compagnon –

2

Utilisez

pushd targetFolder 
set current=%cd% 
popd 

Pushd/popd maintenir une pile des annuaires précédemment visités.

+0

merci aussi pour votre aide –

8

Vous pouvez aussi faire quelque chose comme ceci:

 
set current=%CD% 
set parent=%CD%\.. 

Il ne vous donne pas le nom canonique du parent, mais il doit toujours être un chemin valide dans le dossier parent. Il sera également un peu plus rapide que les solutions impliquant pushd et popd, mais ce ne sera pas la considération primordiale dans un fichier batch.

Edit: Notez que toutes les solutions à ce jour, y compris le mien ici, aura des problèmes si le dossier en cours est la racine d'un lecteur. Il n'y a pas de solution propre et facile à utiliser, car il n'y a vraiment aucun parent d'un lecteur visible en mode utilisateur.

+1

C'est une autre façon de regarder. En ce qui concerne votre édition, les deux façons semblent n'avoir aucun problème avec le 'courant' étant la racine d'un lecteur. C: \ cd .. ne vous prendra pas un niveau plus élevé, mais reste à C: \ sans freinage, et techniquement C: \ est le parent de C: \ donc c'est cool. Je n'utiliserai pas ça de toute façon;) –

+0

C'est juste une source de discontinuité, ou une boucle qui ne s'arrête pas, donc j'ai pensé que cela valait la peine d'être mentionné. – RBerteig

+0

Une autre solution simple, cool! –

Questions connexes