Question Accédez au répertoire précédent dans l'invite de commande Windows.


Y at-il une commande / un outil pour naviguer dans le répertoire précédent dans l'invite de commande Windows?

En linux généralement utiliser

cd -

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


31
2018-04-12 03:00


origine




Réponses:


Enregistrez les éléments suivants par exemple. mycd.bat quelque 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, n'oubliez jamais d'utiliser mycd au lieu de cd changer de répertoire et de lecteur.

Sinon, utilisez un doskey macro:

C:\>doskey cd=mycd $*

La seule mise en garde est que si vous omettez l'espace entre cd et .. ou \, vous obtiendrez la version intégrée de cd pas le doskey macro ... et vous devez toujours vous rappeler de ne pas utiliser C:, D: etc. pour changer de lecteur.


17
2018-05-18 07:46



Il semble que cela ne devrait pas fonctionner, mais c'est le cas. OLDPWD est défini correctement. - Hugh Allen
+1 C'est bien, ça marche! mais douloureux d'utiliser mycd (ou whtevr) - ukanth
@HughAllen peut créer une macro de type 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 corriger, remplacez les guillemets simples par des guillemets doubles. - barlop


Vous pouvez utiliser pushd et popd:

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

33
2018-04-12 03:09



Thx John, mais ce n'est pas exactement ce que je recherche. - ukanth
C'est exactement ce que je veux pour mes scripts batch, merci. Il change même les disques sans avoir besoin du commutateur \ d - Deebster
Attention Avec pushd/popd toi avoir à considérer la possibilité d'erreurs. Dans un script quand vous pushd un répertoire qui n'existe pas ne finira pas dans la pile, mais quand vous popd vous quitterez un niveau: variable non remplie correctement, missprint, mauvais lecteur ... 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 / dirs. 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


Si vous voulez le comportement exact de bash, pourquoi ne pas utiliser bash? j'ai cygwin installé et c'est très sympa. Il ne vous oblige pas à rester fidèle à ses outils UNIX - il appellera avec plaisir tous les exécutables Windows. Pour cmd.exe Builtins 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                             
$ 

4
2018-05-18 04:10





si vous exécutez le fichier de commandes, vous pouvez utiliser

  cd /D  %~dp0

Cela va revenir au chemin d'origine à partir duquel le fichier de commandes a été exécuté


3
2018-05-17 13:44





Il y a un freeware cmd clone avec des fonctionnalités supplémentaires, y compris cd - appelé Prenez la Command Console LE.

alt text


3
2018-05-18 13:38



Cela ne fonctionne pas - ukanth
@TiNS: OK je l'ai juste essayé et ça a fonctionné pour moi. Qu'est-ce que ça a fait pour vous? - Hugh Allen
J'ai essayé avec la console (depuis la fenêtre principale) - ukanth
@TiNS: Je ne sais pas trop ce que vous avez fait, mais peut-être que cette capture d'écran vous aidera? (réponse mise à jour) - Hugh Allen


Selon votre objectif, vous pouvez simplement lancer une nouvelle session en faisant "cmd", déplacer le répertoire et faire ce que vous voulez, quand vous quittez la session pour quitter la session, vous serez de retour dans le répertoire où vous vous trouviez. vous avez commencé la nouvelle session.


1
2018-04-02 14:09





La réponse acceptée est très bonne pour l'exigence. Alors que je dois souvent basculer entre de nombreux répertoires récents au lieu de seulement deux (actuels et précédents).

J'ai donc récemment fait un lot pour faciliter mes tâches quotidiennes. https://gist.github.com/programus/2d2738b2a746140186f7738b678bdcec


1
2018-06-14 02:52



Il est si facile de taper cdx :. Merci! Ce devrait être la meilleure réponse votée. - AndreyWD