Change current directory to the batch file directory

I have a bat file on windows that execute a procdump operation. The issue with the batch file is that I need to cd to the batch file directory first before executing the job, or else the script won't work.

How to change to the current batch file directory?

I tried the following code in my procdump.bat:

cd "%~dp"
procdump -h devenv.exe mydump.txt

But it failed, the error message is:

The following usage of the path operator in batch-parameter substitution is invalid: %~dp"

For valid formats type CALL /? or FOR /?

Edit: The answer provided is working, but there is only one catch: if my current directory is different than the batch file directory, then I would get a "The system cannot find the path specified". Anyone has any ideas?


Solution 1:

Ok, I think I found here what you mean with %~dp.

I think what you really want to do is this:

cd /D "%~dp0"

(!) But note that this will still not give you the right behaviour when you're trying to execute your batch while the current directory is on another drive as cd doesn't change the active drive.

Edit: Apparently (thanks @Yoopergeek) you can add the /D parameter to the cd command to let it also change the active drive.

Solution 2:

I'd leave a comment to fretje's answer, but evidently I can't???


Anyway, regarding the note:
But note that this will still not give you the right behaviour when you're trying to execute your batch while the current directory is on another drive as cd doesn't change the active drive.


Use the /D switch in your CD command, and CD will change the active drive.

Solution 3:

You can do pushd "%~dp0" to go to the directory of a batch file -- even if it's on another drive. Additionally, that allows you to popd to go back to where you came from.