Odpowiedzi:
Zapisz następujące elementy np. mycd.batgdzieś na twojej drodze:
@echo off
if '%*'=='' cd & exit /b
if '%*'=='-' (
cd /d %OLDPWD%
set OLDPWD=%cd%
) else (
cd /d %*
if not errorlevel 1 set OLDPWD=%cd%
)
Zawsze pamiętaj, aby używać mycdzamiast cdzmieniać katalogi i dyski.
Możesz też użyć doskeymakra:
C:\>doskey cd=mycd $*
Jedynym zastrzeżeniem jest to, jeśli pominąć przestrzeń pomiędzy cdi ..czy \będzie można dostać wersję wbudowanego w cdnie z doskeymakro ... a trzeba jeszcze pamiętać, aby nie wykorzystania C:, D:itp zmienić dysk.
Możesz użyć pushd i popd:
C: \ WINDOWS> pushd \ C: \> popd C: \ WINDOWS>
pushd/popdwas musiał taktowny możliwość błędów . W skrypcie, gdy pushdkatalog, który nie istnieje, nie skończy się na stosie, ale gdy wyjdziesz popdz jednego poziomu: zmienna nie jest poprawnie wypełniona, źle drukowana, niewłaściwy dysk ... Myślisz, że jesteś w innym katalogu od tego, w którym jesteś, z poważnym problemem, np. kiedy usuwasz pliki / katalogi. Awaria (składnia Linuksa): cd $HOME; mkdir A; pushd A; mkdir B; pushd D; do stuff (in A, you believe in B); popd; rm -rf * wierzysz w A, ale ... za późno, cały katalog domowy zniknął.
Jeśli chcesz dokładnego zachowania bash, dlaczego nie użyć bash? Mam zainstalowany Cygwin i jest bardzo fajny. Nie zmusza Cię do trzymania się narzędzi UNIX - z przyjemnością wywoła dowolny plik wykonywalny systemu Windows. W przypadku cmd.exewbudowanych możesz utworzyć 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
$
Istnieje darmowy cmdklon z dodatkowymi funkcjami, w tym o cd -nazwie Take Command Console LE .

W zależności od tego, jaki jest twój cel, możesz po prostu rozpocząć nową sesję cmd, wykonując polecenie „cmd”, przenieść katalog i zrobić, co chcesz, a następnie opuścić sesję, aby opuścić sesję, a następnie powrócisz do katalogu, w którym byłeś rozpocząłeś nową sesję.
Przyjęta odpowiedź jest bardzo dobra dla tego wymagania. Chociaż często muszę przełączać się między wieloma nowymi katalogami zamiast tylko dwóch (obecnych i poprzednich).
Niedawno przygotowałem partię, aby ułatwić sobie codzienną pracę. https://gist.github.com/programus/2d2738b2a746140186f7738b678bdcec
cdx :. Dzięki! Powinna to być najbardziej pozytywna odpowiedź.