Respostas:
Salve o seguinte em, por exemplo. mycd.bat
em algum lugar no seu caminho:
@echo off
if '%*'=='' cd & exit /b
if '%*'=='-' (
cd /d %OLDPWD%
set OLDPWD=%cd%
) else (
cd /d %*
if not errorlevel 1 set OLDPWD=%cd%
)
Lembre-se sempre de usar em mycd
vez de cd
alterar diretórios e unidades.
Como alternativa, use uma doskey
macro:
C:\>doskey cd=mycd $*
A única ressalva é se você omitir o espaço entre cd
e ..
ou \
, você vai ter a versão embutida de cd
não o doskey
macro ... e você ainda tem que se lembrar de não usar C:
, D:
etc, para mudar de carro.
Você pode usar pushd e popd:
C: \ WINDOWS> pushd \ C: \> popd C: \ WINDOWS>
pushd/popd
você tem que considerar a possibilidade de erros . Em um script, quando pushd
um diretório que não existe, ele não termina na pilha, mas quando você popd
sai de um nível: variável não preenchida corretamente, impressão incorreta, unidade errada ... Você acha que está em um diretório diferente daquele em que você está, com sérios problemas, por exemplo, quando você exclui arquivos / diretórios. Desastre (sintaxe do Linux): cd $HOME; mkdir A; pushd A; mkdir B; pushd D; do stuff (in A, you believe in B); popd; rm -rf *
você acredita em A, mas ... tarde demais, todo o seu diretório pessoal se foi.
Se você deseja o comportamento exato do bash, por que não usar o bash? Eu tenho o cygwin instalado e é muito bom. Isso não faz com que você se atenha às ferramentas UNIX - chamará qualquer executável de janelas. Para cmd.exe
builtins, você pode criar um 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
$
Há um freeware cmd
clone com recursos extras, incluindo cd -
chamado Take Command Console LE .
Dependendo do seu objetivo, você pode simplesmente iniciar uma nova sessão de cmd executando 'cmd', mover o diretório e fazer o que quiser, quando fizer 'exit' para sair da sessão e voltar ao diretório em que estava. você iniciou a nova sessão.
A resposta aceita é muito boa para o requisito. Embora muitas vezes precise alternar entre muitos diretórios recentes, em vez de apenas dois (atual e anterior).
Recentemente, fiz um lote para facilitar meus trabalhos diários. https://gist.github.com/programus/2d2738b2a746140186f7738b678bdcec
cdx :
. Obrigado! Deve ser a resposta mais votada.