How to change current working directory using a batch file
Asked Answered
Q

5

133

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.

Qianaqibla answered 28/2, 2011 at 5:24 Comment(0)
H
192

Specify /D to change the drive also.

CD /D %root%
Handsaw answered 28/2, 2011 at 5:27 Comment(3)
Other answers say \d (lowercase) is there a difference between either? Is the option just case-insensitive?Kaolack
@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.Handsaw
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%Aiaia
E
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.

Eda answered 28/2, 2011 at 5:26 Comment(0)
O
38

Try this

chdir /d D:\Work\Root
Obrien answered 12/9, 2014 at 12:7 Comment(2)
It should be noted that before and after directory, " should be put like this; chdir /d "D:\Work\Root"Ariose
@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\SomethingHomeopathic
B
22

A simpler syntax might be

pushd %root%

Bibliophile answered 15/7, 2019 at 15:51 Comment(0)
S
6

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.

Salted answered 1/2, 2022 at 21:54 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.