Passare alla directory precedente nel prompt dei comandi di Windows


33

C'è qualche comando / strumento per navigare nella directory precedente nel prompt dei comandi di Windows?

Di solito uso linux

cd -

per la navigazione della directory precedente.

Risposte:


21

Salva il seguente ad es. mycd.bat da qualche parte nel tuo percorso:

@echo off
if '%*'=='' cd & exit /b
if '%*'=='-' (
    cd /d %OLDPWD%
    set OLDPWD=%cd%
) else (
    cd /d %*
    if not errorlevel 1 set OLDPWD=%cd%
)

Quindi ricordati sempre di usare mycd invece di cd per cambiare directory e unità.

In alternativa, utilizzare a doskey macro:

C:\>doskey cd=mycd $*

L'unica avvertenza è se si omette lo spazio tra cd e .. o \, otterrai la versione integrata di cd non il doskey macro ... e devi ancora ricordarti di non usare C:, D: ecc. per cambiare unità.


Sembra che non dovrebbe funzionare, ma lo fa. OLDPWD viene impostato correttamente.
Hugh Allen

1
+1 Questo è bello, funziona! ma doloroso usare mycd (o whtevr)
ukanth

@HughAllen può creare una macro doskey per cd \ e cd .. doskey cd \ = cd \ o doskey cd \ = c: \ mycd.bat \ doskey C: = c: \ mycd.bat C:
barlop

Quel bat fallirà per c: \ blah.bat% USERPROFILE% (quindi cd o cdd% USERPROFILE% fallirà). Per risolvere il problema, modifica le virgolette singole in virgolette.
barlop

33

Puoi usare pushd e popd:

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

Grazie John, ma questo non è esattamente quello che sto cercando.
ukanth

2
È esattamente quello che voglio per i miei script in batch, grazie. Cambia anche le unità senza bisogno dell'interruttore \ d
Deebster

2
avvertimento Con pushd/popd tu considerare la possibilità di errori . In uno script quando tu pushd una directory che non esiste non finirà nello stack, ma quando tu popd uscirai di un livello: la variabile non è stata compilata correttamente, la missprint, l'unità sbagliata ... Pensi di essere in una directory diversa da quella in cui ti trovi, con un problema serio, ad es. quando elimini file / dirs. Disastro (sintassi di Linux): cd $HOME; mkdir A; pushd A; mkdir B; pushd D; do stuff (in A, you believe in B); popd; rm -rf * credi in A ma ... troppo tardi, tutta la tua home directory è sparita.
Hastur

4

Se vuoi il comportamento esatto di bash, perché non usare bash? io ho cygwin installato ed è molto bello. Non ti fa aderire ai suoi strumenti UNIX: chiamerà tranquillamente qualsiasi eseguibile di Windows. Per cmd.exe builtins puoi creare 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                             
$ 

3

se si sta eseguendo il file batch è possibile utilizzare

  cd /D  %~dp0

Questo tornerà al percorso originale da dove è stato eseguito il file batch


3

C'è un freeware cmd clone con funzionalità extra tra cui cd - chiamato Prendi la console di comando LE .

alt text


Questo non funziona
ukanth

2
@TiNS: OK, l'ho appena provato e ha funzionato per me. Cosa ha fatto per te?
Hugh Allen

Ho provato con la console (dalla finestra principale)
ukanth

1
@TiNS: Non sono chiaro su quello che hai fatto, ma forse questo screenshot ti sarà d'aiuto? (risposta aggiornata)
Hugh Allen

1

A seconda di quale sia il tuo obiettivo, potresti iniziare una nuova sessione di cmd facendo "cmd", spostando la directory e facendo quello che vuoi, quando poi "esci" per lasciare la sessione tornerai nella directory in cui ti trovavi quando hai iniziato la nuova sessione.



0

Quello che faccio è

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%
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.