136

I need some help in writing a batch file. I have a path stored in a variable root as follows:

set root=D:\Work\Root

Then I am changing my working directory to this root as follows:

cd %root%

When I execute this batch file from anywhere on the D drive this is done successfully. But when I execute the same batch file from some other drive, cd %root% doesn't work.

Is there a way I can get the drive letter from the root variable? I can then change the current directory to this drive first and then cd %root% shall work.

bubble
3,5365 gold badges34 silver badges52 bronze badges
asked Feb 28, 2011 at 5:24

5 Answers 5

195

Specify /D to change the drive also.

CD /D %root%
answered Feb 28, 2011 at 5:27
Sign up to request clarification or add additional context in comments.

3 Comments

Other answers say \d (lowercase) is there a difference between either? Is the option just case-insensitive?
@josch: Yes, if we are talking about CMD's internal commands, then switch parameters like /D above are case-insensitive (/D = /d), just like the commands themselves (CD = cd). I believe that is also true for all external Windows command-line utilities (like FINDSTR, SORT etc.) Third-party tools, on the other hand, can use case-sensitive parameters.
not worth an own answer, but you can set "root=/d D:\Work\Root" and cd %root% or even set "root=cd /d D:\Work\Root" and just %root%
47

Just use cd /d %root% to switch driver letters and change directories.

Alternatively, use pushd %root% to switch drive letters when changing directories as well as storing the previous directory on a stack so you can use popd to switch back.

Note that pushd will also allow you to change directories to a network share. It will actually map a network drive for you, then unmap it when you execute the popd for that directory.

answered Feb 28, 2011 at 5:26

Comments

37

Try this

chdir /d D:\Work\Root
Ryan M
20.6k35 gold badges76 silver badges85 bronze badges
answered Sep 12, 2014 at 12:07

2 Comments

It should be noted that before and after directory, " should be put like this; chdir /d "D:\Work\Root"
@AdInfinitum No that's not true, that's only necessary if there's spaces in the path. Just qouting the spaced words works as well, like C:\"Program Files"\Something\Something
23

A simpler syntax might be

pushd %root%

answered Jul 15, 2019 at 15:51

Comments

7

In my batch file I needed to :

  1. Change dir to other directory
  2. run commands in bat file -- do some work in that directory
  3. change back to my original directory

pushd solved this with the help of popd

bat file example

pushd <my-working-directory>
do command
do other command
...
popd 

popd moved me back to original directory.

answered Feb 1, 2022 at 21:54

1 Comment

Thanks, and it works with relative paths too like pushd ..

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.