Risposte:
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à.
Puoi usare pushd e popd:
C:\WINDOWS>pushd \ C:\>popd C:\WINDOWS>
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.
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
$
C'è un freeware cmd
clone con funzionalità extra tra cui cd -
chiamato Prendi la console di comando LE .
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.
La risposta accettata è molto grande per il requisito. Mentre spesso devo passare da molte directory recenti invece di solo due (attuali e precedenti).
Così di recente ho creato un lotto per semplificare i miei lavori quotidiani. https://gist.github.com/programus/2d2738b2a746140186f7738b678bdcec
cdx :
. Grazie! Dovrebbe essere la risposta in alto in alto.
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%