Відповіді:
Збережіть наступне, наприклад, mycd.bat
десь на вашому шляху:
@echo off
if '%*'=='' cd & exit /b
if '%*'=='-' (
cd /d %OLDPWD%
set OLDPWD=%cd%
) else (
cd /d %*
if not errorlevel 1 set OLDPWD=%cd%
)
Тоді завжди пам'ятайте використовувати mycd
замість того, cd
щоб змінювати каталоги та диски.
Крім того, використовуйте doskey
макрос:
C:\>doskey cd=mycd $*
Єдине застереження , якщо опустити простір між cd
і ..
чи \
, ви отримаєте версію вбудованої в cd
не в doskey
макро ... і ви все ще повинні пам'ятати , щоб не використовувати C:
, і D:
т.д. на диск зміни.
Ви можете використовувати pushd і popd:
C: \ WINDOWS> pushd \ C: \> popd C: \ WINDOWS>
pushd/popd
вами повинні благорассудітельной можливістю помилок . У сценарії, коли ви pushd
не існує каталогів, він не закінчиться в стеці, але коли ви popd
вийдете з одного рівня: змінна не заповнена правильно, помилка, неправильний диск ... Ви думаєте бути в каталозі іншим з тієї, в якій ви знаходитесь, з серйозними проблемами, наприклад, коли ви видаляєте файли / dirs. Катастрофа (синтаксис Linux): cd $HOME; mkdir A; pushd A; mkdir B; pushd D; do stuff (in A, you believe in B); popd; rm -rf *
ви вірите в A, але ... занадто пізно, весь ваш домашній каталог зник.
Якщо ви хочете точної поведінки bash, чому б не використовувати bash? У мене встановлено cygwin, і це дуже приємно. Це не змушує вас дотримуватися його інструментів UNIX - він із задоволенням називатиме будь-які Windows виконуваними. Для cmd.exe
вбудованих файлів ви можете створити псевдонім:
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
$
Існує безкоштовний cmd
клон із додатковими функціями, зокрема cd -
під назвою Take Command Console LE .
Залежно від того, яка ваша мета, ви можете просто почати новий сеанс cmd, зробивши 'cmd', перемістити каталог і робити все, що завгодно, коли ви потім 'выйдете', щоб залишити сеанс, ви повернетеся в той каталог, в якому ви були ви розпочали нову сесію.
Прийнята відповідь дуже чудова для вимоги. Хоча мені часто доводиться перемикатися серед багатьох останніх каталогів замість лише двох (поточних та попередніх).
Тому я нещодавно зробив партію, щоб полегшити свою щоденну роботу. https://gist.github.com/programus/2d2738b2a746140186f7738b678bdcec
cdx :
. Спасибі! Це має бути відповідь зверху.
Що я і роблю
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%