Réponses:
Enregistrez les éléments suivants dans, 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, pensez toujours à utiliser mycd
au lieu de cd
changer de répertoire ou de lecteur.
Sinon, utilisez une doskey
macro:
C:\>doskey cd=mycd $*
Le seul inconvénient est que si vous omettez l'espace entre cd
et ..
ou \
, vous obtiendrez la version intégrée de cd
pas la doskey
macro ... et vous devez toujours vous rappeler de ne pas utiliser C:
, D:
etc. pour changer de lecteur.
Vous pouvez utiliser pushd et popd:
C: \ WINDOWS> pushd \ C: \> popd C: \ WINDOWS>
pushd/popd
vous devez considérer la possibilité d'erreurs . Dans un script quand vous avez pushd
un répertoire qui n'existe pas, il ne finira pas dans la pile, mais quand vous popd
quitterez 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.
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.exe
inté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
$
Il existe un cmd
clone gratuit avec des fonctionnalités supplémentaires, notamment cd -
appelé Take Command Console LE .
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.
La réponse acceptée est très bonne pour l'exigence. Bien que je doive souvent basculer entre plusieurs annuaires récents au lieu de seulement deux (actuel et précédent).
J'ai donc récemment fabriqué un lot pour faciliter mes tâches quotidiennes. https://gist.github.com/programus/2d2738b2a746140186f7738b678bdcec
cdx :
. Merci! Ce devrait être la réponse la plus votée.
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%