40
10
Is there any command / tool to navigate previous directory in windows command prompt?
In linux usually use
cd -
for previous directory navigation.
40
10
Is there any command / tool to navigate previous directory in windows command prompt?
In linux usually use
cd -
for previous directory navigation.
28
Save the following to eg. mycd.bat
somewhere in your path:
@echo off
if '%*'=='' cd & exit /b
if '%*'=='-' (
cd /d %OLDPWD%
set OLDPWD=%cd%
) else (
cd /d %*
if not errorlevel 1 set OLDPWD=%cd%
)
Then always remember to use mycd
instead of cd
to change directories and drives.
Alternatively, use a doskey
macro:
C:\>doskey cd=mycd $*
The only caveat is if you omit the space between cd
and ..
or \
, you will get the builtin version of cd
not the doskey
macro... and you still have to remember not to use C:
, D:
etc. to change drive.
40
You can use pushd and popd:
C:\WINDOWS>pushd \ C:\>popd C:\WINDOWS>
Thx John, But this is not exactly what i am looking for. – ukanth – 2010-05-17T16:24:42.810
2Warning With pushd/popd
you have to considerate the possibility of errors. In a script when you pushd
a directory that doesn't exists it will not finish in the stack, but when you popd
you will exit of one level: variable not filled correctly,missprint,wrong drive... You think to be in a directory different from the one in which you are, with serious problem e.g. when you delete files/dirs. Disaster (Linux syntax): cd $HOME; mkdir A; pushd A; mkdir B; pushd D; do stuff (in A, you believe in B); popd; rm -rf *
you believe in A but...too late, all your home directory is gone. – Hastur – 2016-03-05T07:30:48.597
2It's exactly what I want for my batch scripts, thanks. It even changes drives without needing the \d switch – Deebster – 2012-02-08T10:59:40.947
4
if you are running the batch file you can use
cd /D %~dp0
This will jump back to the original path from where the batch file was run
4
If you want the exact behavior of bash, why not use bash? I have cygwin installed and it is very nice. It doesn't make you stick to its UNIX tools - it will happily call any windows executable. For cmd.exe
builtins you can create an 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
There's a freeware cmd
clone with extra features including cd -
called Take Command Console LE.
This doesn't work – ukanth – 2010-05-19T02:39:00.607
2@TiNS: OK I just tried it and it worked for me. What did it do for you? – Hugh Allen – 2010-05-19T03:11:41.290
I tried with console (from main window) – ukanth – 2010-05-19T12:29:00.847
1@TiNS: I'm not clear on what you did, but maybe this screenshot will help? (answer updated) – Hugh Allen – 2010-05-19T12:51:27.037
1
The accepted answer is very great for the requirement. While I often have to switch among many recent directories instead of just just two (current and previous).
So I recently made a batch to make my daily jobs easier. https://gist.github.com/programus/2d2738b2a746140186f7738b678bdcec
It's so easy to type cdx :
. Thanks! It should be the top upvoted answer. – AlexMelw – 2018-08-15T09:48:58.380
1
Depending what your goal is, you could just start a new cmd session by doing 'cmd', move directory and do whatever you want, when you then do 'exit' to leave the session you'll be back in the directory you were when you started the new session.
0
What I do is
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%
It looks like it shouldn't work, but it does. OLDPWD gets set correctly. – Hugh Allen – 2010-05-18T07:52:36.860
2+1 This is nice , it works! but painful to use mycd (or whtevr ) – ukanth – 2010-05-18T10:13:37.213
@HughAllen can make a doskey macro for cd\ and cd.. doskey cd=cd \ or doskey cd=c:\mycd.bat \ doskey C:=c:\mycd.bat C: – barlop – 2011-11-07T13:13:09.000
That bat will fail for c:\blah.bat %USERPROFILE% (so cd or cdd %USERPROFILE% will fail). To fix, change single quotes to double quotes. – barlop – 2011-11-23T12:52:35.060