Przejdź do poprzedniego katalogu w wierszu polecenia systemu Windows


39

Czy jest jakieś polecenie / narzędzie do nawigacji w poprzednim katalogu w wierszu poleceń systemu Windows?

W Linuksie zwykle używaj

cd -

do poprzedniej nawigacji w katalogu.

Odpowiedzi:


27

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.


Wygląda na to, że nie powinno działać, ale działa. OLDPWD zostanie ustawiony poprawnie.
Hugh Allen,

2
+1 To jest fajne, działa! ale bolesne w użyciu mycd (lub whtevr)
ukanth

@HughAllen może utworzyć makro doskey dla cd \ i cd .. doskey cd \ = cd \ lub doskey cd \ = c: \ mycd.bat \ doskey C: = c: \ mycd.bat C:
barlop

Ten nietoperz zawiedzie dla c: \ blah.bat% USERPROFILE% (więc cd lub cdd% USERPROFILE% zawiedzie). Aby to naprawić, zmień pojedyncze cudzysłowy na podwójne.
barlop

39

Możesz użyć pushd i popd:

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

Dzięki John, ale to nie jest dokładnie to, czego szukam.
ukanth

2
Właśnie tego chcę od moich skryptów wsadowych, dzięki. Zmienia nawet dyski bez potrzeby przełączania \ d
Deebster

2
Ostrzeżenie z 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ął.
Hastur

4

jeśli uruchamiasz plik wsadowy, możesz użyć

  cd /D  %~dp0

Spowoduje to powrót do oryginalnej ścieżki, z której uruchomiono plik wsadowy


4

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                             
$ 

3

Istnieje darmowy cmdklon z dodatkowymi funkcjami, w tym o cd -nazwie Take Command Console LE .

alternatywny tekst


To nie działa
ukanth

2
@TiNS: OK Właśnie próbowałem i zadziałało dla mnie. Co ci to zrobiło?
Hugh Allen

Próbowałem z konsolą (z głównego okna)
ukanth

1
@TiNS: Nie jestem pewien, co zrobiłeś, ale może ten zrzut ekranu pomoże? (odpowiedź zaktualizowana)
Hugh Allen

1

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ę.



0

To co robię jest

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%
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.