Louis Rhys
Louis Rhys

Reputation: 35627

How to set the working directory of a command in a Windows batch file?

Let's say I have these commands:

Prog1.exe
D:\SomeDir\Prog2.exe
Prog3.exe

Now, say for the second line, I would like the working directory to be D:\SomeDir, but in Prog1.exe and Prog3.exe I want the default working directory (normally, where my .bat file is). If I try this

Prog1.exe
cd D:\SomeDir
D:\SomeDir\Prog2.exe
Prog3.exe

Apparently Prog3 will be executed in SomeDir, which is not what I want.

Upvotes: 54

Views: 133625

Answers (3)

David Ruhmann
David Ruhmann

Reputation: 11367

You could use the cd command (help with cd /?) with the %~dp0, batch file path, variable.

Prog1.exe
cd D:\SomeDir
Prog2.exe
cd %~dp0
Prog3.exe

For a complete list of %~ modifiers see call /? or for /? help.

However, I only add this as to provide a more complete answer on Stack Overflow. I would RECOMMEND using jeb's solution above.

Upvotes: 13

Ryan
Ryan

Reputation: 24035

What worked for me is adding a /d:

cd /d C:\nginx
ECHO Stopping nginx...
start nginx -s quit

(When I didn't have the /d, it didn't work.)

https://stackoverflow.com/a/18310141/470749 tries to explain it.

Upvotes: 13

jeb
jeb

Reputation: 82307

You could use the pushd/popd commands (help with pushd /?)

Prog1.exe
Pushd D:\SomeDir
Prog2.exe
popd
Prog3.exe

Upvotes: 80

Related Questions