Odpowiedzi:
Zapisz następujące elementy np. mycd.bat
gdzieś 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ć mycd
zamiast cd
zmieniać katalogi i dyski.
Możesz też użyć doskey
makra:
C:\>doskey cd=mycd $*
Jedynym zastrzeżeniem jest to, jeśli pominąć przestrzeń pomiędzy cd
i ..
czy \
będzie można dostać wersję wbudowanego w cd
nie z doskey
makro ... 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/popd
was musiał taktowny możliwość błędów . W skrypcie, gdy pushd
katalog, który nie istnieje, nie skończy się na stosie, ale gdy wyjdziesz popd
z 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.exe
wbudowanych 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 cmd
klon 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ź.