Accéder au répertoire précédent dans l'invite de commande Windows


39

Existe-t-il une commande / un outil permettant de parcourir le répertoire précédent dans l'invite de commande de Windows?

Sous Linux, utilisez habituellement

cd -

pour la navigation précédente dans le répertoire.

Réponses:


27

Enregistrez les éléments suivants dans, par exemple. mycd.batquelque part sur votre chemin:

@echo off
if '%*'=='' cd & exit /b
if '%*'=='-' (
    cd /d %OLDPWD%
    set OLDPWD=%cd%
) else (
    cd /d %*
    if not errorlevel 1 set OLDPWD=%cd%
)

Ensuite, pensez toujours à utiliser mycdau lieu de cdchanger de répertoire ou de lecteur.

Sinon, utilisez une doskeymacro:

C:\>doskey cd=mycd $*

Le seul inconvénient est que si vous omettez l'espace entre cdet ..ou \, vous obtiendrez la version intégrée de cdpas la doskeymacro ... et vous devez toujours vous rappeler de ne pas utiliser C:, D:etc. pour changer de lecteur.


On dirait que ça ne devrait pas marcher, mais ça marche. OLDPWD est configuré correctement.
Hugh Allen

2
+1 C'est bien, ça marche! mais douloureux d'utiliser mycd (ou whtevr)
ukanth

@HughAllen peut créer une macro doskey pour cd \ et cd .. doskey cd \ = cd \ ou doskey cd \ = c: \ mycd.bat \ doskey C: = c: \ mycd.bat C:
barlop

Cette batte échouera pour c: \ blah.bat% USERPROFILE% (donc cd ou cdd% USERPROFILE% échouera). Pour résoudre ce problème, remplacez les guillemets simples par des guillemets doubles.
barlop

39

Vous pouvez utiliser pushd et popd:

C: \ WINDOWS> pushd \
C: \> popd
C: \ WINDOWS>

Thx John, Mais ce n'est pas exactement ce que je recherche.
ukanth

2
C'est exactement ce que je veux pour mes scripts batch, merci. Il change même les lecteurs sans avoir besoin du commutateur \ d
Deebster

2
Avertissement Avec pushd/popdvous devez considérer la possibilité d'erreurs . Dans un script quand vous avez pushdun répertoire qui n'existe pas, il ne finira pas dans la pile, mais quand vous popdquitterez d'un niveau: variable non remplie correctement, missprint, lecteur erroné ... Vous pensez être dans un répertoire différent de celui dans lequel vous vous trouvez, avec un problème sérieux, par exemple lorsque vous supprimez des fichiers / répertoires. Disaster (syntaxe Linux): cd $HOME; mkdir A; pushd A; mkdir B; pushd D; do stuff (in A, you believe in B); popd; rm -rf * vous croyez en A mais ... trop tard, tout votre répertoire personnel a disparu.
Hastur

4

si vous utilisez le fichier de commandes, vous pouvez utiliser

  cd /D  %~dp0

Cela vous ramènera au chemin d'origine à partir duquel le fichier de commandes a été exécuté.


4

Si vous voulez le comportement exact de bash, pourquoi ne pas utiliser bash? J'ai installé cygwin et c'est très agréable. Cela ne vous oblige pas à vous en tenir à ses outils UNIX - il appellera volontiers tous les exécutables Windows. Pour les commandes cmd.exeintégrées, vous pouvez créer un alias:

hugh@comp07 ~/testdir                             
$ alias cm='cmd /c'                               

hugh@comp07 ~/testdir                             
$ cm dir                                          
 Volume in drive C has no label.                  
 Volume Serial Number is AC2A-8378                

 Directory of C:\cygwin\home\hugh\testdir         

18/05/2010  02:02 PM    <DIR>          .          
18/05/2010  02:02 PM    <DIR>          ..         
               0 File(s)              0 bytes     
               2 Dir(s)   1,365,155,840 bytes free

hugh@comp07 ~/testdir                             
$ 

3

Il existe un cmdclone gratuit avec des fonctionnalités supplémentaires, notamment cd -appelé Take Command Console LE .

texte alternatif


Cela ne marche pas
ukanth

2
@TiNS: OK je viens de l'essayer et cela a fonctionné pour moi. Qu'est-ce que cela a fait pour vous?
Hugh Allen

J'ai essayé avec console (de la fenêtre principale)
ukanth

1
@TiNS: Je ne comprends pas ce que vous avez fait, mais peut-être que cette capture d'écran vous aidera? (réponse mise à jour)
Hugh Allen

1

En fonction de votre objectif, vous pouvez simplement démarrer une nouvelle session cmd en faisant "cmd", déplacer un répertoire et faire ce que vous voulez. Lorsque vous quittez cette session, vous quittez la session et vous revenez dans le répertoire où vous étiez. vous avez commencé la nouvelle session.



0

Ce que je fais c'est

rem capture the path of the initial dir
set RET_DIR=%CD%
rem do stuff...
rem and then return to the initial dir
cd %RET_DIR%
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.